0

在表格的开头,我有一个全局表格:错误:

<form:form method="post" action="updateMainContact" modelAttribute="mainContact">
<form:errors path="*" cssClass="errorblock" element="div" />            

在我的表单中,我有三个按特定顺序排列的字段:电话、手机、传真

<th><label for="mainContactPhoneLabel">Phone Number:<br>9999999999</label></th> 
    <td><form:input path="phone" type="integer" size="10" maxlength="10"  />
<th><label for="mainContactFaxLabel">Fax:<br>9999999999</label></th> 
    <td><form:input path="fax" type="integer" size="15" maxlength="15" />
<th><label for="mainContactEmailLabel">Email:</label></th> 
    <td><form:input path="email" type="text" size="30" maxlength="30" /></td>

当我强制所有三个字段出现类型不匹配错误时,结果序列是 ALWAYS Cell, Fax 然后 Phone。这是为什么 ?如何使订单按照屏幕上的字段顺序(电话、手机、传真)?

请注意,我不能有单独的 form:errors 标记,因为每个字段没有足够的空间来放置 form:errors 标记,这就是我将它们全部放在顶部的原因。

编辑我希望所有错误消息都在同一个“错误块”中。在顶部单独列出它们:

<form:errors path="phone" cssClass="errorblock" />
<form:errors path="cell" cssClass="errorblock" />
<form:errors path="fax" cssClass="errorblock" />

对我没有帮助,因为它会为每个错误消息创建一个错误块。

4

2 回答 2

1

最后,在网上搜索了很多之后,我终于找到了一种方法来获得我想要的结果:

<spring:hasBindErrors name="mainContact">                   
    <c:if test="${errors.errorCount > 0}">
        <div class="errorblock">
            <c:forEach items="${errors.fieldErrors}" var="errorList">
                <c:if test="${errorList.field=='phone'}">
                   <form:errors path="phone" /><br>
                </c:if>
            </c:forEach>
            <c:forEach items="${errors.fieldErrors}" var="errorList">
                <c:if test="${errorList.field=='cell'}">
                   <form:errors path="cell" /><br>
                </c:if>
            </c:forEach>                            
            <c:forEach items="${errors.fieldErrors}" var="errorList">
                <c:if test="${errorList.field=='fax'}">
                   <form:errors path="fax" /><br>
                </c:if>
            </c:forEach>                            
        </div>                              
    </c:if>
</spring:hasBindErrors>

此代码将每个错误消息放在同一“错误”块中的单独行上。

于 2013-08-13T12:42:37.003 回答
0

简单的方法是为每个字段使用路径。

<form:errors path="phone" cssClass="errorblock" element="div" />
<form:errors path="cell" cssClass="errorblock" element="div" />
<form:errors path="fax" cssClass="errorblock" element="div" />

您还可以尝试使用组解决方案(请参阅错误消息的顺序不正确)。但这对我来说似乎不是一个好的选择。

编辑

为什么不对这样div的类使用一个整体的错误errorblock呢?

<div class="errorblock">
    <form:errors path="phone" cssClass="" element="div" />
    <form:errors path="cell" cssClass="" element="div" />
    <form:errors path="fax" cssClass="" element="div" />
</div>
于 2013-08-06T20:29:11.357 回答