Struts2のexecAndWaitインターセプターの使い方

Struts2のexecAndWaitインターセプターは、要求がタイムアウトしたり中断したりしないように、長時間実行要求を処理するために主に使用されます。Struts2のexecAndWaitインターセプターを使用する手順を以下に示します。

  1. まず、struts.xml 設定ファイルに、execAndWait インターセプターを定義する。以下に例を示します。
<interceptors>
   <interceptor name="execAndWait" class="org.apache.struts2.interceptor.ExecAndWaitInterceptor"/>
   <interceptor-stack name="defaultStack">
       <interceptor-ref name="defaultStack"/>
       <interceptor-ref name="execAndWait"/>
   </interceptor-stack>
</interceptors>
  1. execAndWaitインタセプタが必要なActionクラスでは、インタセプタスタックの使用を次のように指定します。
<action name="longRunningAction" class="com.example.LongRunningAction">
    <interceptor-ref name="defaultStack"/>
    <interceptor-ref name="execAndWait"/>
    <result name="success">result.jsp</result>
</action>
  1. Action クラス内で、長期実行系の処理の状態を保持するグローバル変数を追加し、そのゲッター、セッターを提供する。具体的には以下のとおり。
public class LongRunningAction extends ActionSupport {
    private boolean running;

    // getter and setter for running

    public String execute() throws Exception {
        setRunning(true);

        // perform long running operation

        setRunning(false);
        return SUCCESS;
    }
}
  1. ネイティブな日本語で言い換えます。1つのオプションのみでお願いします:
  2. 走ること
<s:execAndWait action="longRunningAction">
    <div id="loadingMessage" style="display: ${running ? 'block' : 'none'}">
        Loading...
    </div>
</s:execAndWait>

上記のステップにより、Struts2 execAndWaitインターセプターを使用可能になり、長時間実行要求に対処し、ページ上で適切なロード中のヒント情報を表示できます。

bannerAds