Validation 在XWork验证器中重用正则表达式

Validation 在XWork验证器中重用正则表达式,validation,struts2,xwork,Validation,Struts2,Xwork,在不创建新类并将其添加为验证器类型的情况下,我希望在XWork中重用一些正则表达式 我似乎在网上找不到语法正确的教程。我想更改以下内容: <field name="example"> <field-validator type="regex"> <param name="expression">[some ridiculously long regex expression like](0?[1-9]|[12][0-9]|3[01])/(

在不创建新类并将其添加为验证器类型的情况下,我希望在XWork中重用一些正则表达式

我似乎在网上找不到语法正确的教程。我想更改以下内容:

<field name="example">
    <field-validator type="regex">
       <param name="expression">[some ridiculously long regex expression like](0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)</param>
       <message key="example.error" />
    </field-validator>
</field>

[一些非常长的正则表达式,如](0?[1-9]|[12][0-9]|[3[01])/(0?[1-9]|[012])/((19 | 20)\\d\\d)
例如:

 <regex-pattern>
   <name>date-regex-pattern</name>
   <expression>[some ridiculously long regex expression like](0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)</expression>
 </regex-pattern>

<field name="example">
    <field-validator type="regex">
       <param name="expression">{date-regex-pattern}</param>
       <message key="example.error" />
    </field-validator>
</field>

日期正则表达式模式
[一些非常长的正则表达式,如](0?[1-9]|[12][0-9]|[3[01])/(0?[1-9]|[012])/((19 | 20)\\d\\d)
{date regex模式}
或者通过链接其他现有类型在xml中创建一个新的字段验证器类型,例如,具有最小和最大长度的必填字段以及要传递的正则表达式


xml和语法在XWork中的正确位置是什么?

将表达式放在BaseAction中getter方法公开的字符串中一次(该操作由所有其他操作扩展):

private final static荒唐地长regexexpression
=“(0?[1-9]|[12][0-9]|[3[01])/(0?[1-9]|[012])/((19 | 20)\\d)”;
public get可笑地长regexexpression(){
返回可笑的长regexexpression;
}
然后使用regexExpression从XML文件调用它:


${可笑的长regexexpression}

有关的更多信息。

使用正则表达式进行日期验证并不是最好的主意。不过,通过给正则表达式验证器命名来重用它们是一种有用的模式,我想知道如何使用XWork实现。Struts 1在验证xml文件中有全局常量。谢谢。我想这是重用正则表达式的一种方法。您知道XWork是否不直接在验证xml文件中支持这种功能吗?不,因为虽然xml文件可以访问该操作,但它不能访问或“扩展”其他xml文件。。。那么它就不能重复使用了。