In this situation follow Post/Redirect/Get pattern flow. When server side validation fails (result.hasErrors()
) do not redirect but display index page again. Spring handles passing errors to template. To display errors use function of your template engine that supports Spring MVC (for example display all errors in JSP - <form:errors path="*" element="div" />
).
@Controller
public class MyController {
@RequestMapping(value="/index.html", method=RequestMethod.GET)
public String display(@ModelAttribute MyForm myForm){
return "index";
}
@RequestMapping(value="/process.do", method=RequestMethod.POST)
public String processForm(@ModelAttribute @Validated MyForm myForm,
BindingResult result) {
if(result.hasErrors()){
return display(myForm);
}
return "redirect:/processed.html";
}
}