1
resposta

RequestMapping na classe

package br.com.casadocodigo.loja.controllers;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import br.com.casadocodigo.loja.daos.ProdutoDAO;
import br.com.casadocodigo.loja.models.Produto;
import br.com.casadocodigo.loja.models.TipoPreco;

@Controller
@RequestMapping(value = "produtos")
public class ProdutosController {

    @Autowired
    private ProdutoDAO prod;

    @RequestMapping("form")
    public ModelAndView form() {

        ModelAndView modelAndView = new ModelAndView("form");
        modelAndView.addObject("tipos", TipoPreco.values());
        return modelAndView;
    }

    @RequestMapping(method = RequestMethod.POST)
    public String gravar(Produto produto) {

        System.out.println(produto);
        prod.gravar(produto);
        return "produtos/ok";
    }

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView listar() {
        List<Produto> produtos = prod.listar();
        ModelAndView modelAndView = new ModelAndView("lista");
        modelAndView.addObject("produtos", produtos);
        return modelAndView;
    }

}

Ao acessar o form de cadastro do produto do curso Spring MVC, o jsp nao é encontrado e ocorre o erro 404. Como todos os metodos do controller usa o /produtos, incluir a anotacao @RequestMapping na classe e nos metodos passo apenas o contexto complementar, porem nao funciona. Quando incluo o contexto compelo no modelandview, funciona. Alguma luz??

1 resposta

Tenta usar ao invés do method, no requestMapping, use a Annotation @PostMapping e @GetMapping.