在Struts2的字段验证动态字段名(dynamic field name for field va

2019-10-30 16:34发布

我有这个类

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

每次提交时间地址的对象添加到列表中,因此规模会由一个增加页面。 当我查看上一个文本框的HTML源文件,它的名字看起来像这样listOfAddress [0] .streetName,如果我succefull加入后提交的JSP页面,它会返回到相同的页面,这个文本字段的名称将是listOfAddress [ 1] .streetName如果你查看它的HTML源代码

像这样,我想同样的Employee对象,我可以添加尽可能多的地址。

到目前为止,一切都OK了。 问题是,当我想验证这个领域ican't,因为它是动态的,如果我把这个验证它会验证它仅在第一次。

     <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”根据列表的大小dymanic。

我不知道如何从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> 

或通过动态值的自定义验证?

请帮帮我,怎么当该指数动态验证列表

Answer 1:

使用访客验证。 见http://struts.apache.org/2.x/docs/using-visitor-field-validator.html 。



文章来源: dynamic field name for field validator in struts2