4

Struts 2の1つのアクションのフォーム検証を無効にできるようにしたいのですが、インターセプタースタックの残りの部分は引き続き実行できます。

ユーザーがログインしているかどうかを確認するインターセプターがあります。これは常に実行したいのですが、一部のアクション(たとえば、情報の入力)では、アクション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ただし、インターセプターと検証の両方をスキップします。

4

1 に答える 1

5

私はそれを理解しました-解決策は次のようになります:

<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アクションメソッドに対して引き続き起動します。

于 2011-11-15T00:50:20.250 に答える