Ich habe einen Controller, der JSON zurückgibt. Es nimmt eine Form an, die sich über Federnotizen validiert. Ich kann FieldError-Liste von BindingResult abrufen, aber sie enthalten nicht den Text, den eine JSP in dem Tag anzeigen würde. Wie kann ich den Fehlertext in JSON zurücksenden lassen?So erhalten Sie Fehlertext im Controller von 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 Klasse ist nur ein 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...
}
Aufruf BindingResult.getAllErrors() gibt ein Array von FieldError Objekte, aber es hat nicht die tatsächlichen Fehler.
Sagen wir, ich habe folgende in ValidationMessages.pr operties: "answerform.questionId.invalid = Ungültige Frage-ID: {0}." fieldError.getCode() wird "answerform.questionId.invalid" zurückgeben, ich suche den Fehler selbst, nicht den Code, zB: "Ungültige Frage ID: 123" – Mike
@Mike Siehe ** Update **! –
@Mike Wenn meine Antwort Ihre Bedürfnisse erfüllt, wäre es möglich, dass Sie es als akzeptiert markieren ??? –