在表单开头,我有一个全局表单:错误:
<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>
当我强制所有三个字段的typemismatch错误时,结果序列始终是Cell,Fax然后是Phone 。 这是为什么 ?如何在屏幕上按照我的字段顺序进行订单(电话,手机,传真)?
请注意,我不能使用单独的表单:错误标记,因为我没有足够的空间来放置表单:errors标记,这就是为什么我将它们全部放在顶部。
编辑我希望所有错误消息都在同一个“错误块”中。在顶部单独列出它们:
<form:errors path="phone" cssClass="errorblock" />
<form:errors path="cell" cssClass="errorblock" />
<form:errors path="fax" cssClass="errorblock" />
对我没用,因为它会为每条错误消息创建一个错误块。
答案 0 :(得分: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>
此代码将每条错误消息放在同一“错误”块中的单独一行上。
答案 1 :(得分: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" />
您也可以尝试使用群组解决方案(请参阅Error messages are not in the correct order)。但对我来说这似乎不是一个好选择。
修改强>:
为什么不对这类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>