Tengo un controlador que devuelve JSON. Toma una forma, que se valida a sí misma a través de anotaciones de primavera. Puedo obtener la lista FieldError de BindingResult, pero no contienen el texto que un JSP mostraría en la etiqueta. ¿Cómo puedo obtener el texto de error para enviar de vuelta en JSON?Cómo obtener el texto de error en el controlador desde 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;
}
}
clase JSONREsponse es sólo un 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() devuelve una matriz de objetos FieldError, pero no tiene los errores reales.
Digamos que he siguiente en ValidationMessages.pr operties: "answerform.questionId.invalid = Id. de pregunta no válida: {0}." fieldError.getCode() devolverá "answerform.questionId.invalid", estoy buscando el error en sí, no el código, por ejemplo: "ID de pregunta no válida: 123" – Mike
@Mike ¡Vea ** Actualización **! –
@Mike Si mi respuesta satisface sus necesidades, ¿sería posible que la marque como aceptada? –