【发布时间】:2014-11-13 16:51:28
【问题描述】:
问题:
我正在寻找一个好的解决方案来验证我在Spring MVC 控制器中的数据并使用Knockout JS 填充错误。我想象与 Spring Tags 中现有的 <form:errors path=""> 类似的东西。
该解决方案应提供以下属性:
- 使用 jQuery 和 AJAX 提交表单
- 使用
@ModelAttribute和@Valid进行服务器端验证 - 错误消息应自动填充到某些“敲除错误标签”
类似的东西已经存在吗?如果这将提供所需的功能,我也愿意切换到另一个 JS 框架。 (Angular、Backbone 等)
我的自定义解决方案:
我将所有错误存储在 Map<String, String> 中,其中键是字段名称,值是错误消息,并在 Knockout 中填充错误。这个解决方案的问题是,KnockoutJS 在验证后会丢失所有未绑定的字段。
验证:
helper.getErrors().put("firstName", messageSourceProvider.getMessage("validation.requiredDefault"));
序列化:
JSONSerializer serializer = new JSONSerializer();
serializer.include("helper");
serializer.include("helper.errors");
String json = serializer.serialize(helper);
淘汰赛:
<!-- ko foreach: errors -->
<!-- ko if: key === 'firstName' -->
<span data-bind='text: value' class="spring-error ordinary-tooltip fa fa-lg fa-exclamation-circle"></span>
<!-- /ko -->
<!-- /ko -->
【问题讨论】:
-
您可以将github.com/Knockout-Contrib/Knockout-Validation 与来自后端的错误响应结合起来。
标签: ajax angularjs validation spring-mvc knockout.js