0

私はこのクラスを持っています

public Class Employee
{
    String name;
    List<Address> listOfAddress;
}

public Class Address
{
    String location;
    String streetName;
}

私のJSPページで私はこのように記入しました

 <s:textfield id="streetName" name="listOfAddress[%{listOfAddress.size()}].streetName" size="20" maxlength="24" cssStyle="width: 100px" />

ページを送信するたびに、時間のオブジェクトアドレスがリストに追加されるため、サイズが1つ増えます。前のtextFieldのソースHTMLを表示すると、その名前はこのlistOfAddress [0] .streetNameのようになります。完全に追加した後にJSPページを送信すると、同じページに戻り、このテキストフィールドの名前はlistOfAddress[になります。 1].streetNameのHTMLソースを表示する場合

このように、同じEmployeeオブジェクトに必要な数のアドレスを追加できます。

これまでのところすべてがOKです。問題は、このフィールドを検証したい場合です。このフィールドは動的であるため、この検証を行うと、最初にのみ検証されます。

     <field name="listOfAddress[0].streetName">
        <field-validator type="requiredstring" short-circuit="true">
           <param name="trim">true</param>
           <message>sorry this field is required field</message>
       </field-validator>
    </field> 

私が欲しいのは、リストのサイズに応じて、リスト「listOfAddress」のインデックスを動的にすることです。

jspからdynamicallを渡す方法がわかりません

私はこのようなことをすることができますか?

    <field name="listOfAddress[**${dynamic index value}**].streetName">
        <field-validator type="requiredstring" short-circuit="true">
           <param name="trim">true</param>

           **<param name="myIndex">${dynamic index value}</param>**

           <message>sorry this field is required field</message>
       </field-validator>
    </field> 

または動的な値をカスタムバリデーターに渡しますか?

インデックスが動的であるときにリストを検証する方法を教えてください

4

1 に答える 1

0

訪問者バリデーターを使用します。http://struts.apache.org/2.x/docs/using-visitor-field-validator.htmlを参照してください。

于 2012-09-28T20:25:16.490 に答える