在没有创建新类并将其添加为验证器类型的情况下,我想在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>
类似于:
<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>
或者通过链接其他现有类型在xml中创建一个新的字段验证器类型,例如,具有最小和最大长度的必填字段以及要传递的正则表达式。
XWork中xml和语法的正确位置是什么?
答案 0 :(得分:1)
将表达式放在由BaseAction中的getter方法公开的String中(所有其他人扩展的Action):
private final static ridiculouslyLongRegexExpression
= "(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)";
public getRidiculouslyLongRegexExpression(){
return ridiculouslyLongRegexExpression;
}
然后使用regexExpression从XML文件中调用它:
<field name="example">
<field-validator type="regex">
<param name="regexExpression">${ridiculouslyLongRegexExpression}</param>
</field-validator>
</field>
有关official documentation的更多信息。