0

フォームの先頭に、グローバル form:errors があります。

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

私のフォームには、次の特定の順序で 3 つのフィールドがあります: Phone、Cell、Fax :

<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>

3 つのフィールドすべてで typemismatch エラーを強制すると、結果シーケンスは常に 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 に答える