2

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

如果映射我的地图;如何使用动态密钥验证地图?如果 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>

谢谢,

海伦

4

3 回答 3

1

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

  1. 通过使用 myMap.salary
  2. 通过使用 myMap['salary']

您将需要使用上述符号之一,该符号基于您定义输入表单字段的方式。

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

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

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

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

希望这可以帮助

于 2009-07-21T06:15:16.577 回答
1

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

还有一个用于 Struts2 的插件,它使用这个:

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

于 2009-10-08T12:36:30.677 回答
0

我认为您不能在声明性验证中执行此操作。我建议为此使用验证方法,或者如果您使用的是框架生成的 javascript 验证,则在 javascript 中进行验证。

于 2009-07-09T03:50:18.300 回答