Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Passo 6 método form.

Estou anexando minha classe Controller, porém não estou conseguindo entender o motivo desse método form() não está funcionando. Quando tento utilizar ele aparece como não encontrado.

package org.hermivaldo.controller;

import java.util.List;

import javax.validation.Valid;

import org.hermivaldo.daos.ProdutoDAO;
import org.hermivaldo.entidades.Produto;
import org.hermivaldo.entidades.TipoPreco;
import org.hermivaldo.validation.ProdutoValidation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

@Controller
@RequestMapping("produto")
public class ProdutoController {

    @Autowired
    ProdutoDAO dao;

    @InitBinder
    public void InitBinder(WebDataBinder binder) {
        binder.addValidators(new ProdutoValidation());
    }

    @RequestMapping(value="cadastrar", method=RequestMethod.GET)
    public ModelAndView cadastrar() {
        System.out.println("Entrando no método de cadastrar produto");
        ModelAndView view = new ModelAndView("produto/cadastro");
        view.addObject("tipos", TipoPreco.values());
        return view;
    }

    @RequestMapping(method=RequestMethod.POST)
    public ModelAndView salvar(@Valid Produto produto, BindingResult result,RedirectAttributes redirectAttributes) {
        if (result.hasErrors()) {
            return form();
        }
        dao.salvar(produto);
        redirectAttributes.addFlashAttribute("msg", "Produto cadastrado com sucesso");
        return new ModelAndView("redirect:produto");
    }

    @RequestMapping(method=RequestMethod.GET)
    public ModelAndView listagem() {
        List<Produto> livros = dao.getListaLivros();
        ModelAndView view = new ModelAndView("produto/listagem");
        view.addObject("livros", livros);
        return view;
    }

}
1 resposta
solução!

Fala Hermivaldo, tudo bem ?

Seu método que leva para o formulário é o método cadastrar(), por isso não é possível fazer a chamada ao método form(), que não existe na sua classe.

Abraço!