Cyr*_*eba 6 java validation spring-mvc
我的spring web应用程序使用带弹簧的ajax,它基于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>
Run Code Online (Sandbox Code Playgroud)
我通过以下js方法将表单提交给服务器:
$("#createLevel").submit(function() {
var level = $(this).serializeObject();
$.postJSON("create.do", level, function(data) {
alert(data);
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
在服务器端,我有一个验证,如下所示:
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;
}
Run Code Online (Sandbox Code Playgroud)
和控制器
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
当我向服务器提交不正确的数据时,我发现所有事情都正确进行 - 我的验证器正在处理数据,而客户端正在收到错误响应; 此外,在响应内容中,我看到以下内容:
{"name":"size must be between 2 and 30"}
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何正确绑定收到的错误消息.显然,我可以通过js来实现,但我认为Spring会自动将所有错误消息绑定到视图中.
任何帮助都非常感谢.
-Cyril
创建 AjaxResponse 类作为表单字段、状态和描述的容器。
class AjaxResponse {
model; //form attribute
status; // OK or ERROR
description; // message description such as error message
}
Run Code Online (Sandbox Code Playgroud)
您可以循环失败验证结果,根据失败验证结果以 JSON 格式生成 AjaxResponse 列表,作为控制器操作的响应。
| 归档时间: |
|
| 查看次数: |
4550 次 |
| 最近记录: |