1
resposta

Erro ao editar produto Problems calling function [spring:mvcUrl]

Quando tento editar um produto ou mesmo acessar o cadastro de produto explode esse erro (resumido):

GRAVE: Servlet.service() for servlet [jsp] threw exception
java.lang.IllegalArgumentException: Mapping not found: cadastraProduto
    at org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMappingName(MvcUriComponentsBuilder.java:463)
    at org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMappingName(MvcUriComponentsBuilder.java:433)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
GRAVE: Servlet.service() for servlet [dispatcher] in context with path [/projeto-jpa] threw exception [javax.el.ELException: Problems calling function [spring:mvcUrl]] with root cause
java.lang.IllegalArgumentException: Mapping not found: cadastraProduto
    at org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMappingName(MvcUriComponentsBuilder.java:463)
    at org.springframework.web.servlet.mvc.method.annotation.MvcUriComponentsBuilder.fromMappingName(MvcUriComponentsBuilder.java:433)

Eu já troquei no form para ficar com ${spring:mvcUrl('PC#cadastraProduto').build()} e também já tentei a rota /projeto-jpa/cadastraPoduto e trocar de form para a taglib form:form . Nada funcionou.

Link do GitHub:https://github.com/ErivanJunior275/JPA-e-Hibernate

Linha do form apontanda no erro

<form:form action="${spring:mvcUrl('cadastraProduto').build()}" method="">

ProdutoController envolvido

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

    @Autowired
    private ProdutoDao produtoDao;

    @Transactional
    @RequestMapping(method=RequestMethod.POST, name="cadastraProduto")
    public String cadastraProduto(@ModelAttribute @Valid Produto produto, BindingResult result, RedirectAttributes atts) {

        if(result.hasErrors()) {
            return form(produto);
        }

        produtoDao.insere(produto);

        return "redirect:/";
    }

    @RequestMapping(value="/form", method=RequestMethod.GET)
    public String form(Produto produto) { 
        return "produto/form";
    }

    @RequestMapping(value="/{id}/form", method=RequestMethod.GET)
    public String update(@PathVariable Integer id, Model model) {
        Produto produto = produtoDao.getProduto(id);

        model.addAttribute("produto", produto);
        return form(produto);
    }

    @RequestMapping("/{id}")
    public String detalhe(@PathVariable Integer id, Model model) {
        Produto produto = produtoDao.getProduto(id);

        model.addAttribute("produto", produto);
        return "produto/detalhe";
    }    

    @RequestMapping(value="/buscar", method=RequestMethod.POST, name="buscarProdutos")
    public String buscarPor(Model model,
            @RequestParam String nome, 
            @RequestParam Integer categoriaId,
            @RequestParam(required=false) Integer lojaId) {

        List<Produto> produtos = produtoDao.getProdutos(nome, categoriaId, lojaId);

        model.addAttribute("produtos", produtos);

        return "home";

    }
}
1 resposta

Olá Erivan, tudo bem? Peço desculpas pelo demora no retorno! Acho que você está com o mesmo problema que o Cleverton estava nesse outro tópico e lá eu indiquei a solução, você poderia verificar esse tópico e fala pra gente se deu tudo certo!

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software