Повторное использование регулярного выражения в валидаторе 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])/(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, связав другие существующие типы, например, обязательное поле с минимальной и максимальной длинами и регулярное выражение для передачи.
Каково правильное расположение для xml и синтаксиса в XWork?
1 ответ
Решение
Поместите свое выражение один раз в строку, предоставляемую методом get в BaseAction (действие, расширенное всеми остальными):
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;
}
Затем вызовите его из ваших файлов XML, используя regexExpression:
<field name="example">
<field-validator type="regex">
<param name="regexExpression">${ridiculouslyLongRegexExpression}</param>
</field-validator>
</field>
Больше информации на официальной документации.