2
respostas

Curiosidade sobre o mvcUrl

Boa tarde pessoal.

Recentemente passei pelo mesmo problema que a Juliana Torres (https://cursos.alura.com.br/forum/topico-problema-com-a-exclusao-dos-itens-e-finalizacao-dos-pedidos-mesmo-depois-de-atualizar-a-tag-form-form-48022#630684), ao clicar em link criado com o mvcUrl, eu recebia erro 404 na seguinte URL: http://localhost:8080/casadocodigo/WEB-INF/views/carrinho/itens.jsp/carrinho/remover?produtoId=13&tipoPreco=COMBO

O Problema é que o Spring estava tentando colocar o caminho do link após a chamada da JSP, sendo que, de acordo com o padrão da pasta WEB-INF, não é possível chamar uma .jsp direto na url.

Mas pq isso acontecia?

O motivo é bem mais simples do que parece.

No método itens da classe CarrinhoDeComprasController, ao informamos qual será a view apresentada existia um erro.

@RequestMapping(method = RequestMethod.GET)
public ModelAndView itens() {
    return new ModelAndView("/carrinho/itens");
}

Repare que nós estamos retornando a / antes do carrinho e por algum motivo que ainda estou pesquisando, o Spring entende que qualquer link dessa view deve ser inserido o path da jsp na frente.

A solução é tirar o / inicial. O código correto é:

@RequestMapping(method = RequestMethod.GET)
public ModelAndView itens() {
    return new ModelAndView("carrinho/itens");
}

Bom, abri o tópico no caso de pessoas passarem por esse problema não precisarem fazer nenhuma gambi para contornar isso.

Obs: Se alguém souber o motivo pelo qual o Spring faz isso, ficarei feliz em saber.

Att, Júlio Falbo

2 respostas

Lembrando que o retorno ali depende da configuração do prefix e suffix para as páginas jsp da aplicação. Acho que deve ter a ver com isso.

Muito obrigado Julio, resolveu meu problema. Perfeito. Tinha tomado uma surra com isso.