Struts 2 перенаправляет при сбое проверки и сохраняет сообщение об ошибке - PullRequest
1 голос
/ 02 июля 2011

Я пытаюсь отобразить сообщение об ошибке проверки после перенаправления поля ввода действия.Я пытаюсь использовать MessageStoreInterceptor, но без особого успеха.Вот файл struts.xml:

        <action name="list" class="myAction" method="list">
        <interceptor-ref name="store">
            <param name="operationMode">RETRIEVE</param>
        </interceptor-ref>
        <interceptor-ref name="myDefaultInterceptorStack" />
        <result name="success">/list.jsp</result>
        <result name="input">/list.jsp</result>
    </action>
    <action name="add" class="myAction" method="add">
        <interceptor-ref name="store">
            <param name="operationMode">STORE</param>
        </interceptor-ref>
        <interceptor-ref name="myDefaultInterceptorStack" />
        <result name="success" type="redirectAction">
            <param name="actionName">list</param>
        </result>
        <result name="input" type="redirectAction">
            <param name="actionName">list</param>
        </result>
    </action>

Метод действия list устанавливает значения раскрывающегося списка в list.jsp, поэтому его необходимо выполнить перед отображением jsp.

Проверка находится в MyAction-add-validation.xml:

    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
       "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
    <field name="name">
        <field-validator type="requiredstring">
            <message key="name.required" />
        </field-validator>
    </field>
</validators>

Если я вызываю list.action, list.jsp отображается правильно заполненным.Затем я отправляю форму, вызывающую add.action, и, поскольку я оставил поле имени emtpy, проверка не пройдена.MessageStoreInterceptor сохраняет ошибку поля, затем перенаправление ввода указывает на действие списка, но действие списка очевидно пересылает на ввод вперед без предварительного выполнения метода списка.

Так что, если я помещаю тег в list.jsp, я вижу сообщение об ошибке проверки, но раскрывающийся список в list.jsp не заполняется, потому что метод list в list.action не был выполнен.

Есть ли способ добиться того, что мне нужно?Любая помощь приветствуется.Спасибо

1 Ответ

2 голосов
/ 05 июля 2011

Как описано здесь MyAction необходимо реализовать Preparable, чтобы при сбое валидации, так как метод prepare () вызывается перед ним, мы все еще заполняем наши элементы управления.

...