I have an controller that returns JSON. It takes a form, which validates itself via spring annotations. I can get FieldError
list from BindingResult
, but they don't contain the text that a JSP would display in the <form:errors>
tag. How can I get the error text to send back in JSON?
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody JSONResponse submit(@Valid AnswerForm answerForm, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) {
if (result.hasErrors()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
JSONResponse r = new JSONResponse();
r.setStatus(JSONResponseStatus.ERROR);
//HOW DO I GET ERROR MESSAGES OUT OF BindingResult???
} else {
JSONResponse r = new JSONResponse();
r.setStatus(JSONResponseStatus.OK);
return r;
}
}
JSONREsponse class is just a POJO
public class JSONResponse implements Serializable {
private JSONResponseStatus status;
private String error;
private Map<String,String> errors;
private Map<String,Object> data;
// ...getters and setters...
}
Calling BindingResult.getAllErrors()
returns an array of FieldError
objects, but it does not have the actual errors.