如何解决Spring MVC + Ajax如何显示错误?
| 我的spring网络应用程序将ajax与spring结合使用,并且通常基于spring提供的演示应用程序: https://src.springframework.org/svn/spring-samples/mvc-ajax/trunk/ (其他信息:http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/) 在客户端,我有一个表单(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>
我通过以下js方法将表单提交到服务器:
$(\"#createLevel\").submit(function() {
var level = $(this).serializeObject();
$.postJSON(\"create.do\",level,function(data) {
alert(data);
});
return false;
});
在服务器端,我有一个验证,如下所示:
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;
}
和控制器
@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);
}
}
当我向服务器提交不正确的数据时,我看到所有事情都在正常进行-我的验证程序正在处理数据,客户端正在收到错误响应;此外,在响应内容中,我看到以下内容:
{\"name\":\"size must be between 2 and 30\"}
我的问题是我不知道如何正确绑定收到的错误消息。显然,我可以通过js来实现,但是我认为Spring会将所有错误消息自动绑定到视图。
任何帮助都非常感谢。
-西里尔
解决方法
创建AjaxResponse类作为表单字段,状态和描述的容器。
class AjaxResponse {
model; //form attribute
status; // OK or ERROR
description; // message description such as error message
}
您可以循环失败验证结果,基于JSON格式的失败验证结果生成AjaxResponse列表,作为控制器操作的响应。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。