@Post("/produtos")
  public void adiciona(Produto produto) {
    validator.validate(produto);
    validator.onErrorUsePageOf(ProdutosController.class).formulario();

    dao.salva(produto);
    result.redirectTo(this).lista();
  }
 @Get("/produtos/busca.json")
 public void buscaJson(String q) {
   result.use(json()).withoutRoot().from(dao.busca(q)).exclude("id", "descricao").serialize();
 }
 public List<Produto> busca(String nome) {
   result.include("nome", nome);
   return dao.busca(nome);
 }
 @Delete("/produtos/{id}")
 public void remove(Long id) {
   Produto produto = dao.carrega(id);
   dao.remove(produto);
   result.redirectTo(this).lista();
 }
 @Put("/produtos/{produto.id}")
 public void altera(Produto produto) {
   dao.atualiza(produto);
   result.redirectTo(this).lista();
 }
 @Get("/produtos/{id}")
 public Produto edita(Long id) {
   return dao.carrega(id);
 }
 @Get("/produtos")
 public List<Produto> lista() {
   return dao.listaTudo();
 }