在WebWork2.1.1開始,就新增了一個攔截器:execAndWait
<interceptor name="execAndWait" class="com.opensymphony.webwork.interceptor.ExecuteAndWaitInterceptor"/>
execAndWait將請求的Action放到后臺執行,同時返回"wait"的輸出結果;再次同樣的Action請求,如果Action執行完畢,它將返回
真正的輸出結果。
注意:"wait"輸出等待頁面時必須包含下面語句:
<meta http-equiv="refresh" content="5;url="<ww:url includeParams="'all'" />">
它每隔5秒鐘,重新刷新前面的action請求。
?
Example:
// WaitAction.java
// WaitAction.java
package example.wait;
import com.opensymphony.xwork.Action;
public class WaitAction implements Action{
?public String execute() throws Exception {
??try {
??????????? System.out.println("-----start sleep!");
??????????? Thread.sleep(2000 * 10);
??????????? System.out.println("-----end sleep!");
??????? } catch (InterruptedException e) {
??????????? e.printStackTrace();
??????? }
??try {
??????????? System.out.println("-----start sleep!");
??????????? Thread.sleep(2000 * 10);
??????????? System.out.println("-----end sleep!");
??????? } catch (InterruptedException e) {
??????????? e.printStackTrace();
??????? }
??return SUCCESS;
?}
?}
}
?
xwork.xml:
?<action name="wait" class="example.wait.WaitAction">
??????????? <result name="success" type="dispatcher">
??????????????? <param name="location">/success.jsp</param>
??????????? </result>
??????????? <result name="wait" type="dispatcher">
??????????????? <param name="location">/wait.jsp</param>
??????????? </result>
??????????? <interceptor-ref name="execAndWait"/>
??????? </action>
??????????? <result name="success" type="dispatcher">
??????????????? <param name="location">/success.jsp</param>
??????????? </result>
??????????? <result name="wait" type="dispatcher">
??????????????? <param name="location">/wait.jsp</param>
??????????? </result>
??????????? <interceptor-ref name="execAndWait"/>
??????? </action>
wait.jsp:
<%@ taglib uri="webwork" prefix="ww" %>
<HTML>
<HEAD>
<meta http-equiv="refresh" content="5;url="<ww:url includeParams="'all'" />">
</HEAD>
<BODY>
Wait..............
<HTML>
<HEAD>
<meta http-equiv="refresh" content="5;url="<ww:url includeParams="'all'" />">
</HEAD>
<BODY>
Wait..............
</BODY>
</HTML>
</HTML>