У меня есть контроллер, который возвращает JSON. Он принимает форму, которая проверяет себя через весенние аннотации. Я могу получить список FieldError из BindingResult, но они не содержат текст, который JSP будет показывать в теге. Как я могу получить текст ошибки для отправки обратно в JSON?Как получить текст ошибки в контроллере от BindingResult
@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, но это не имеет фактических ошибок.
Скажем, у меня есть следующие в ValidationMessages.pr Операции: "answerform.questionId.invalid = Недопустимый идентификатор вопроса: {0}." fieldError.getCode() вернет «answerform.questionId.invalid», я ищу ошибку, а не код, например: «Недопустимый идентификатор вопроса: 123» – Mike
@Mike См. ** Обновление **! –
@Mike Если мой ответ наполнит ваши потребности, можно ли пометить его как принято ??? –