jeudi 5 mars 2015

Why does BindingResult have to follow @Valid?

I was struggling to get my Spring MVC validation to return to the page submitted page when I had errors. I finally solved the problem by noticing that BindingResult needs to be next to form parameter I'm validating.


For example if I amend the checkPersonInfo method in the spring.io tutorial(http://ift.tt/1etClC0) to -



@RequestMapping(value="/", method=RequestMethod.POST)
public String checkPersonInfo(@Valid Person person, BindingResult bindingResult, Model model) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}


Then it will work and redirect to the form page, but if I change it to -



@RequestMapping(value="/", method=RequestMethod.POST)
public String checkPersonInfo(@Valid Person person, Model model, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}


Then it redirects to /errors


What is the cause of this?


Aucun commentaire:

Enregistrer un commentaire