1

在不创建新类并将其添加为验证器类型的情况下,我想在 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 和语法的正确位置是什么?

4

1 回答 1

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>

有关官方文档的更多信息。

于 2014-06-17T08:52:02.777 回答