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

每次我提交页面时,都会将时间地址对象添加到列表中,因此大小将增加一。当我查看上一个textField的源HTML时,它的名字看起来像这样 listOfAddress[0].streetName ,如果我在添加成功后提交JSP页面,它将返回相同的页面,这个文本字段的名称将是 listOfAddress[ 1].streetName 如果您查看其 HTML 源代码

像这样我可以向同一个 Employee 对象添加尽可能多的地址。

到目前为止一切正常。问题是当我想验证此字段时,因为它是动态的,如果我进行此验证,它将仅在第一次验证它。

     <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动态传递它

我可以做这样的事情吗?

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