如何验证动态地图元素

时间:2009-07-02 13:19:43

标签: java struts2 struts-validation

我有一张地图,我想通过使用表达式验证在struts 2验证框架中验证如何动态访问地图元素?

如果映射myMap;如何用动态密钥验证地图?如果mymap有像“Salary”这样的静态键,我可以像

一样验证
<field
    name="myMap['Salary']">
    <field-validator
        type="regex">
        <param
        name="expression">[0-9]+[.][0-9]+</param>
        <message>${getText("errors.validation.number")}</message>
    </field-validator>
</field>

感谢,

海伦

3 个答案:

答案 0 :(得分:1)

有两种方法可以在声明性验证中使用myApp。

  1. 使用myMap.salary
  2. 使用myMap ['salary']
  3. 您需要使用上述符号之一,该符号基于您如何定义输入表单字段。

    例如,如果您的输入表单如下所示,那么您需要使用。操作员,因为你正在使用。定义输入字段名称时的运算符。

    <s:form action="sayHello">
    <s:textfield name="myMap.salary" label="Salary">
    <s:submit/>
    </s:form>
    

    如果使用[] opertaor定义输入字段的名称,则使用[]运算符访问验证器中的属性。

    因此,上面的验证代码是正确的,您只需要使用[]运算符在输入表单中正确定义输入字段。

    希望这有帮助

答案 1 :(得分:1)

Hibernate Validator Framework 具有递归验证功能。

Struts2有一个插件使用它:

完整的Hibernate插件http://cwiki.apache.org/S2PLUGINS/full-hibernate-plugin.html

答案 2 :(得分:0)

我认为您无法在声明性验证中执行此操作。我建议你下载到这个验证方法,或者如果你正在使用框架生成的javascript验证,那么在javascript中进行验证。