我认为这是一个常见的问题,但是整整一天的谷歌搜索没有发现任何有用的东西。
我有一个带有复选框和文本字段的表单。我想对文本字段进行正则表达式验证,但前提是选中了复选框。正则表达式验证目前适用于其他非条件字段,但我不能在我的生活中弄清楚是否存在允许在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>
有没有人有代码示例如何执行此操作?
非常感谢任何帮助。
答案 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()方法)中实现任何自定义验证逻辑。只是偏好,真的没有充分的理由。