Struts 2.5.12/2.5.13 — проверки перестали работать после обновления Struts

Я обновил Struts в одном из проектов с 2.3.x до 2.5.12 (также пробовал с 2.5.13) и вижу, что после этого обновления проверки не происходит.

У меня в JSP:

<s:form action="details">
    <s:textfield name="fullName" size="20" label="full.name" requiredLabel="true" />
    <s:checkbox id="terms" name="terms" requiredLabel="true" />
    <s:submit name="submit" id="submit" value="Submit" />
</s:form>

Название действия TestStrutsAction.java. Моя проверка xml TestStrutsAction-validation.xml выглядит так:

<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="fullName">
        <field-validator type="requiredstring">
            <message key="fullname.error"/>
        </field-validator>
        <field-validator type="regex">
           <param name="expression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param> 
           <message key="fullname.invalid"/>
        </field-validator>
    </field>

     <field name="terms">
        <field-validator type="fieldexpression">
            <param name="expression">terms eq true</param>
            <message key="terms.error"/>
        </field-validator>
    </field>
</validators>

Я переопределил проверку в своем классе действий как:

@Override
public void validate() {
    super.validate();
    LOG.debug(getFieldErrors());
}

Я попытался выполнить отладку и не вижу ошибок поля в методе validate класса действия.

Кто-нибудь знает, почему у меня возникла эта проблема после обновления? Спасибо


person Prasann    schedule 30.10.2017    source источник
comment
не вижу никаких ошибок поля в методе проверки класса действия. Что вы имеете в виду? Это идет к входному результату?   -  person Aleksandr M    schedule 30.10.2017
comment
Привет @AleksandrM, я переопределил метод validate в своем классе действий только для регистрации ошибок. При отправке со страницы jsp я вижу, что управление приходит для проверки метода, но ошибок в полях не добавляется. Я обновил свой вопрос, добавив метод validate. Спасибо за ваш ответ.   -  person Prasann    schedule 30.10.2017
comment
Если вы посмотрите на мой ответ, вы обнаружите, что метод проверки идет сразу после перехватчика, и если он проверяет без ошибок, то что ошибки поля вы ожидали?   -  person Roman C    schedule 31.10.2017
comment
Привет @AleksandrM, я ожидаю несколько ошибок в поле (через проверку XML), так как я не ввожу никаких значений на экране. В своем ответе вы упомянули Перехватчик проверки выполняет проверку и создает список ошибок для конкретных полей. - Я не вижу никаких проверок полей, созданных перехватчиком проверки, хотя я включил проверку перехватчик в моем XML-файле Struts.   -  person Prasann    schedule 31.10.2017


Ответы (1)


Проблема заключалась в регулярном выражении, используемом в XML-файле проверки. У меня есть регулярное выражение в xml проверки как:

<field-validator type="regex">
   <param name="expression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param> 
   <message key="fullname.invalid"/>
</field-validator>

Я изменил expression на regexExpression, как показано ниже, и он начал работать.

<field-validator type="regex">
   <param name="regexExpression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param> 
   <message key="fullname.invalid"/>
</field-validator>

Не уверен, почему другие проверки не работали с неправильным регулярным выражением, но после его изменения все проверки работают.

Это может помочь кому-то, у кого может быть похожая проблема :)

person Prasann    schedule 31.10.2017
comment
Хорошо. :) Не забудьте принять ваш ответ, чтобы помочь будущим посетителям. - person Aleksandr M; 31.10.2017