我正在使用Spring的<form:form
标记在页面上打印任意数量的相同表单,我需要一种方法来区分它们,因为形式错误是一个表格现在印在所有表格上。
目前,所有相同的表单都绑定到相同的单个后备对象。这很好,因为用户一次只能提交一个表单。
我正在使用Spring验证来验证表单字段。如果其中一个字段出现错误(让我们说&#39;名称&#39;为空),则错误消息将打印在&#39; name&#39;所有形式的领域。
显然,我需要一些方法让Spring区分表单,但是如何?
一些示例代码:
此Spring Webflow定义创建一个ClientFormBacking对象来支持客户端表单。它将一个表单POST提交给bindAndValidate方法,该方法调用验证器。
<webflow:var name="clientFormBacking" class="com.example.ClientFormBacking"/>
<webflow:view-state id="list" view="clients" model="clientFormBacking">
<webflow:on-entry>
<webflow:evaluate expression="contextParameterManager.findAll()" result="flowScope.clients"/>
</webflow:on-entry>
<webflow:transition on="update-client" to="list">
<webflow:evaluate expression="clientBinder.bindAndValidate(flowRequestContext)"/>
<webflow:evaluate expression="clientService.saveOrUpdate(flowScope.clientsPageBacking)"/>
</webflow:transition>
</webflow:view-state>
在JSP中使用名称字段和名称错误字段打印任意数量的相同表单:
<c:forEach items="${clients} var="client">
<form:form commandName="clientFormbacking">
<form:input path='name' value='${client.name}'/>
<form:errors path="name" cssClass="input-error" />
</form:form>
</c:forEach>
拒绝&#39;名称&#39;字段:
ClientValidator implements Validator {
public void validate(Object target, Errors errors) {
// Problem here! There are multiple <form:errors path='name'/> tags....
errors.rejectValue("name", "validation.error.name.empty");
}
}