Можно ли с помощью Struts Validator проверить, все ли поля пусты?

Я переписываю части старого проекта, чтобы использовать валидатор 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 или имеет нулевую длину.


person Manu    schedule 31.07.2014    source источник


Ответы (1)


Я пытался использовать validwhen, но он был введен в Stuts 1.2, а я использую 1.1, поэтому я получаю сообщение об ошибке No ValidatorAction, вызванное validwhen, найдено для поля idNumber.

Я мог бы использовать requiredif, но это может быть худший синтаксис, который я когда-либо видел.

Вместо этого я следовал методике из https://stackoverflow.com/a/20086863/113305 и использовал как Struts validator framework и метод validate():

    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    ActionErrors errors = super.validate(mapping, request);

    if (idNumber.length() < 1 && packageNumber .length() < 1) {
        errors.add("emptyForm",
                new ActionError("error.form.empty", "emptyForm"));
    }

    return errors;
person Manu    schedule 31.07.2014