多くの場合、インターセプタの同じセットが異なるアクションクラスに適用されることがあります。たとえば、

<package name="default" namespace="/" extends="struts-default">

    <action name="checkInAction"
    class="com.mkyong.common.action.CheckInAction" >
    <interceptor-ref name="timer"/>
        <interceptor-ref name="logger"/>
    <interceptor-ref name="defaultStack"/>
    <result name="success">pages/checkIn.jsp</result>
    </action>

    <action name="checkOutAction"
    class="com.mkyong.common.action.CheckOutAction" >
    <interceptor-ref name="timer"/>
        <interceptor-ref name="logger"/>
    <interceptor-ref name="defaultStack"/>
    <result name="success">pages/checkOut.jsp</result>
    </action>

</package>

上記のケースでは、複製された作品は数多くあり、再利用することはできません。

幸いにも、Struts 2には

インターセプタスタック

が付いています。これにより、開発者はインターセプタセットを「

スタック名

」と呼ばれる単一のユニットにまとめることができ、アクションは「

スタック名

」で参照できます。

<package name="default" namespace="/" extends="struts-default">

     <interceptors>
        <interceptor-stack name="defaultStackWithLog">
             <interceptor-ref name="timer"/>
             <interceptor-ref name="logger"/>
         <interceptor-ref name="defaultStack"/>
        </interceptor-stack>
    </interceptors>

    <action name="checkInAction"
    class="com.mkyong.common.action.CheckInAction" >
    <interceptor-ref name="defaultStackWithLog"/>
    <result name="success">pages/checkIn.jsp</result>
    </action>

    <action name="checkOutAction"
    class="com.mkyong.common.action.CheckOutAction" >
    <interceptor-ref name="defaultStackWithLog"/>
    <result name="success">pages/checkOut.jsp</result>
    </action>

</package>

上の更新された例では、 ”

timer

“、 ”

logger

“、 ”

defaultStack

“インターセプタを含む ”

defaultStackWithLog

“という名前のインターセプタスタックを宣言し、 ”

interceptor -ref

“要素。

リファレンス

インターセプタのドキュメント]