Por que BindingResult tem que seguir @Valid?
Eu estava lutando para que minha validação do Spring MVC retornasse à página enviada quando havia erros. Finalmente resolvi o problema percebendo que BindingResult precisa estar ao lado do parâmetro que estou validando.
Por exemplo, se eu alterar o método checkPersonInfo no tutorial spring.io (http://spring.io/guides/gs/validating-form-input/) para -
@RequestMapping(value="/", method=RequestMethod.POST)
public String checkPersonInfo(@Valid Person person, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}
Em seguida, ele funcionará e será redirecionado para a página do formulário, mas se eu a alterar para -
@RequestMapping(value="/", method=RequestMethod.POST)
public String checkPersonInfo(@Valid Person person, Model model, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}
Em seguida, ele redireciona para / errors
Qual é a causa disso?