I am using annotation based validation but for one of the forms I am not able to show any errors using the form:errors
tag. When I debug the method, I can see the BindingResult
has errors, but for some reason its not being displayed on the form. I am stumped as I have got it working on other forms, but for some reason this particular form is having issues. Any pointers are greatly appreciated.
Here is some code from the controller, I have the copyCartForm as a @SessionAttribute as well in the Controller:
@RequestMapping(params="action=Confirm Copy", method=RequestMethod.POST)
public String copyCart(@Valid CopyCart copyCartForm, BindingResult result) {
if (result.hasErrors()) {
logger.debug("errors in form" + result.toString());
return "copyshoppingcart";
} else {
...
...
return "redirect:/home";
}
}
In the JSP I have tried this:
<form:errors path="*" cssClass="formError"/>
as well as:
<form:errors path="fieldName" cssClass="formError"/>
Neither works.
I had to use @ModelAttribute
to get this working. So the form was preceded by @ModelAttribute("copyCartForm") @Valid CopyCart copyCartForm, BindingResult result)
One more approach, If for some reason you cannot use @ModelAttribute("copyCartForm")
when use follow:
@RequestMapping(method=RequestMethod.POST) public String post(@Valid CopyCart copyCartForm, BindingResult bindingResult, ModelMap modelMap) { if (bindingResult.hasErrors()) { modelMap.put(BindingResult.class.getName() + ".copyCartForm", bindingResult); return "copyshoppingcart"; } return "redirect:/home"; }
I faced the same issue.
I had to use the @ModelAttribute("attributeName")
to get the validation error back in response.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With