JSONを返すコントローラーがあります。これは、Springアノテーションを介して自身を検証するフォームを取ります。BindingResultからFieldErrorリストを取得できますが、JSPがタグに表示するテキストが含まれていません。エラーテキストを取得して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クラスは単なる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...
}
BindingResult.getAllErrors()を呼び出すと、FieldErrorオブジェクトの配列が返されますが、実際のエラーはありません。