Execute and Wait Interceptor 的使用
在引入了webwork-default.xml的前提下
xwork.xml 配置 :
1、增加攔截器
<interceptor-ref name="execAndWait">
<!-- 等待時間,執行時間沒有超過此值,將不顯示等待畫面 (毫秒)-->
<param name="delay">1000</param>
<!-- 間隔檢查時間,檢查后臺進程有沒有執行完畢,如果完成了它就立刻返回,不用等到等待,用戶不會看到等待畫面 -->
<param name="delaySleepInterval">50</param>
</interceptor-ref>
此攔截器必須放在所有攔截器的最后。
2、增加result
<result name="wait">wait.jsp</result>
如果沒有找到"wait"結果,WebWork會自動生成一個wait結果(\com\opensymphony\webwork\interceptor\wait.ftl).這個結果是用FreeMarker做的,所以需要Freemarker支持才能正常工作。如果你不想在程序中加入FreeMarker,那就必須自己實現一個wait結果。這一般來說是有必要的,因為默認的wait頁面很簡單。
3、Action實現SessionAware接口
因為這個action將會以單獨的線程執行,所以你不能用ActionContext,因為它是ThreadLocal.這也就是說如果你要訪問session數據,你必須實現 SessionAware結構而不是調用ActionContext.getSesion() 。
public interface SessionAware{
public void setSession(Map map);
}
public abstract class AbsBasicAction extends ActionSupport implements SessionAware{
/** 當前 Session */
protected Map session ;
public void setSession(Map session) {
this.session = session ;
}
}
4、實現 wait 結果 映射的 wait.jsp
必須設置該頁面的meta信息,每隔5秒,重新請求一次前面的action。
<meta http-equiv="refresh" content="5;url="<ww:url includeParams="'all'" />">
參見信息 : http://wiki.javascud.org/display/ww2cndoc/Execute+and+Wait+Interceptor
posted on 2006-07-28 14:05 wml 閱讀(580) 評論(0) 編輯 收藏 所屬分類: WebWork