Я переписываю части старого проекта, чтобы использовать валидатор struts 1. каркас.
Я адаптировал правила проверки для каждого отдельного поля с регулярным выражением, которое можно повторно использовать в других формах, например:
<field property="idNumber" depends="mask">
<msg name="mask" key="error.formating.idnumber" />
<arg position="0" value="SearchForm.idNumber" />
<var>
<var-name>mask</var-name>
<var-value>${maskIdNumber}</var-value>
</var>
</field>
Осталось реализовать одну проверку: мне нужно убедиться, что пользователь заполнил какое-либо поле перед отправкой. Глядя на FAQ, я увидел, что есть такие условия, как validwhen
, которые можно использовать для проверки полей относительно друг друга, но, если я не ошибаюсь, они должны быть прикреплены к одному из полей формы.
Если я напишу это:
<field property="idNumber" depends="validwhen">
<msg name="mask" key="error.form.empty" />
<arg position="0" value="SearchForm.idNumber" />
<var>
<var-name>test</var-name>
<var-value>(idNumber != null) or (packageNumber != null)</var-value>
</var>
</field>
Тест будет проведен только в том случае, если поле «idNumber» не пустое, верно? В FAQ написано, что
Любое поле, которое не является «обязательным», пропустит другие проверки, если поле имеет значение null или имеет нулевую длину.