[Spring MVC: Domine o principal framework web Java]

spring-mvc

#1

No livro, no capítulo Validação e conversão de dados, dentro do subtítulo Reaproveitando métodos no controller, é demonstrado para que instanciemos um novo objeto ModelAndView ao retornar o redirecionamento de página, caso não ocorra nenhum erro de validação retornado pelo BindingResult.

No livro, o código é o seguinte:

@RequestMapping(method=RequestMethod.POST)
public ModelAndView save(@Valid Product product,
BindingResult bindingResult,
RedirectAttributes redirectAttributes){
if(bindingResult.hasErrors()){
return form();
}
productDAO.save(product);
redirectAttributes.addFlashAttribute(“sucesso”,
“Produto cadastrado com sucesso”);
return new ModelAndView(“redirect:produtos”);
}

Dessa forma, instanciando o ModelAndView passando redirect:produtos apenas no construtor, tenho problema, pois ao invés de ele direcionar para http://localhost:8080/casadocodigo/produtos, ele direciona para http://localhost:8080/casadocodigo/produtos/produtos.

O que estou fazendo de errado será? Uma coisa que fiz e que funcionou, foi colocar /produtos ao invés de somente produtos.


#2

Quando você faz isso
return new ModelAndView(“redirect:produtos”);
Você está navegando a partir da sua url atual, por isso a duplicação do endereço produtos. Quando coloca a “/” na frente, está navegando a partir da url raiz da sua app:
return new ModelAndView(“redirect:/produtos”);