Mi aplicación web de primavera es el uso de AJAX con la primavera, y se basa en general en la aplicación de demostración proporcionada por el resorte:Spring MVC + Ajax. Cómo mostrar los errores?
https://src.springframework.org/svn/spring-samples/mvc-ajax/trunk/ (Información adicional: http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/)
En el lado del cliente Tengo un formulario (JSP):
<form:form modelAttribute="createLevel" action="createLevel" method="post">
<div class="form-item">
<form:label id="nameLabel" for="name" path="name" cssErrorClass="error">Level Name</form:label><br/>
<form:input path="name" /><form:errors path="name" />
</div>
<div class="form-item">
<input type="submit" value="Submit">
</div>
</form:form>
me envíe el formulario al servidor mediante el siguiente método JS:
$("#createLevel").submit(function() {
var level = $(this).serializeObject();
$.postJSON("create.do", level, function(data) {
alert(data);
});
return false;
});
En el lado del servidor tengo una validación, ya que se muestran a continuación:
public final class LevelDto extends AbstractDto implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
@NotNull
@Size(min = 2, max = 30)
@LevelExistsConstraint(message = "Level with provided name is exists")
private String name;
// set; get;
}
y regulador
@RequestMapping(value = "/admin/create.do", method = RequestMethod.POST)
public @ResponseBody
Map<String, ? extends Object> createLevel(@RequestBody LevelDto level,
HttpServletResponse response) {
//JSR-303
Set<ConstraintViolation<LevelDto>> failures = validator.validate(level);
if (!failures.isEmpty()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return validationMessages(failures);
} else {
return Collections.singletonMap("id", 10);
}
}
Cuando envío de datos incorrectos en el servidor veo que todas las cosas están en marcha correctamente - mi validador está procesando datos, y el cliente está recibiendo una respuesta de error; Por otra parte, en el contenido de la respuesta que veo lo siguiente:
{"name":"size must be between 2 and 30"}
Mi problema es que no sé cómo enlazar mensaje de error recibido correctamente. Obviamente, puedo hacerlo por js, pero pensé que Spring vinculaba todos los mensajes de error automáticamente a la vista.
Cualquier ayuda es realmente apreciada.
-Cyril
+1 Mismo problema. ¿Tienes tu solución? –
Bueno, me rendí y utilicé el método recomendado por Adi (ver la respuesta aceptada) –