我有一個返回JSON的控制器。它採用一種形式,通過Spring註釋驗證自己。我可以從BindingResult獲取FieldError列表,但它們不包含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以下operties: 「answerform.questionId.invalid =無效的問題ID:{0}」。 fieldError.getCode()將返回「answerform.questionId.invalid」,我正在查找錯誤本身,而不是代碼,例如:「無效的問題ID:123」 – Mike 2010-05-03 17:03:04
@Mike請參閱**更新**! – 2010-05-03 20:10:26
@Mike如果我的回答滿足您的需求,是否有可能將您標記爲已接受? – 2010-05-05 03:48:17