Struts2のexecAndWaitインターセプターの使い方
Struts2のexecAndWaitインターセプターは、要求がタイムアウトしたり中断したりしないように、長時間実行要求を処理するために主に使用されます。Struts2のexecAndWaitインターセプターを使用する手順を以下に示します。
- まず、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>
- execAndWaitインタセプタが必要なActionクラスでは、インタセプタスタックの使用を次のように指定します。
<action name="longRunningAction" class="com.example.LongRunningAction">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="execAndWait"/>
<result name="success">result.jsp</result>
</action>
- 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つのオプションのみでお願いします:
- 走ること
<s:execAndWait action="longRunningAction">
<div id="loadingMessage" style="display: ${running ? 'block' : 'none'}">
Loading...
</div>
</s:execAndWait>
上記のステップにより、Struts2 execAndWaitインターセプターを使用可能になり、長時間実行要求に対処し、ページ上で適切なロード中のヒント情報を表示できます。