Struts 2: исключение метода из проверки только из перехватчика defaultStack - PullRequest
4 голосов
/ 14 ноября 2011

Я хочу иметь возможность отключить проверку формы для одного действия в Struts 2, но остальная часть стека перехватчиков по-прежнему может выполняться.

У меня есть перехватчик, который проверяет, вошел ли пользователь в систему, что я всегда хочу выполнить, но для некоторых действий (например, ввода информации) я не хочу, чтобы действие validate вызывалось.

Я пытался сделать что-то вроде следующего:

<interceptors>

    <interceptor name="bankingAuthenticator"
        class="csc309.a4.banking.BankUserAuthenticator"/>

    <interceptor-stack name="secureBanking">
        <interceptor-ref name="bankingAuthenticator"/>
        <interceptor-ref name="defaultStack"/>
    </interceptor-stack>

</interceptors>

<default-interceptor-ref name="secureBanking"/>

<action name="Deposit!*" method="{1}" class="csc309.a4.banking.Deposit">
    <result name="success">/banking/Deposit.jsp</result>
    <interceptor-ref name="defaultStack">
        <param name="workflow.excludeMethods">choose</param>
    </interceptor-ref>
</action>

Но он пропускает как перехватчик bankingAuthenticator, так и проверку.

1 Ответ

5 голосов
/ 15 ноября 2011

Я разобрался - решение выглядит так:

<action name="Deposit!*" method="{1}" class="csc309.a4.banking.Deposit">
    <result name="success">/banking/Deposit.jsp</result>
    <interceptor-ref name="secureBanking">
        <param name="workflow.excludeMethods">choose</param>
    </interceptor-ref>
</action>

Параметры перехватчика могут быть ограничены определенными перехватчиками путем добавления имени перехватчика к имени параметра. В этом случае только перехватчик workflow исключит метод choose; другие перехватчики все равно будут срабатывать для метода действия choose.

...