Spring表单错误在同一页面上有多个相同的表单

时间:2014-04-06 19:17:50

标签: forms spring validation path

我正在使用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");
    }
}

0 个答案:

没有答案