1

我有一个我认为是常见问题的问题,但是一整天的谷歌搜索并没有发现任何有用的东西。

我有一个带有复选框和文本字段的表单。我想对文本字段进行正则表达式验证,但前提是选中了复选框。正则表达式验证目前适用于其他非条件字段,但我无法确定在 action-validation.xml 文件中是否存在允许此操作的语法。IE。对于其他领域,我有类似下面的内容。我需要的是一种仅在选中复选框时才进行有条件评估的方法。

<validators>
 <field name="sn">
  <field-validator type="regex" >
   <param name="expression">
    [0-9]{12} 
                   </param>
   <message>Serial number format is invalid. Please try again</message>
  </field-validator>
 </field>
</validators>

有没有人有如何做到这一点的代码示例?

任何帮助深表感谢。

4

2 回答 2

1

对于 Struts 1,有一个名为“validwhen”的验证规则,您可以使用它来执行复杂的验证,但对于 Struts 2,据我所知没有这样的验证。

对于 Struts 2,您可以使用Expression Validator,您可以在其中指定要使用的OGNL表达式,所以我想您可以尝试以下操作:

<validator type="expression">
    <param name="expression">checkboxField eq "selected" and inputText eq "bla"</param>
    <message>....</message>
</validator>

我不知道的一件事是,是否有一种简单的方法可以使用 OGNL 进行正则表达式检查(您必须对其进行研究)。

此外,如果这不起作用,您可以随时编写自己的自定义验证器

于 2010-12-29T20:57:54.977 回答
0

expressionfieldexpression验证器采用OGNL 表达式。评估为真通过假失败。您可以很容易地使用它们来满足此要求。

就我个人而言,我会像您正在做的那样通过 XML 使用内置验证器,然后在 validate() 方法(或 methodname-validate() 方法)中实现任何自定义验证逻辑。只是偏好,真的没有很好的理由。

于 2010-12-30T02:19:02.043 回答