struts2条件xml验证

时间:2010-12-29 10:33:15

标签: struts2 struts struts-validation

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

我有一个带有复选框和文本字段的表单。我想对文本字段进行正则表达式验证,但前提是选中了复选框。正则表达式验证目前适用于其他非条件字段,但我不能在我的生活中弄清楚是否存在允许在action-validation.xml文件中使用此语法的语法。即。其他领域我有类似的东西。我需要的是一种只有在选中复选框时才能对此条件进行评估的方法。

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

有没有人有代码示例如何执行此操作?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

对于Struts 1,有一个名为“validwhen”的验证规则可用于perform complex validations,但对于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进行正则表达式检查的简单方法(您必须查看它)。

此外,如果这不起作用,您可以随时编写自己的custom validator

答案 1 :(得分:0)

表达式 fieldexpression 验证器采用OGNL表达式。评估为真正的传递错误失败。您可以非常轻松地使用它们来满足此要求。

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