Execute and Wait Interceptor 的使用
在引入了webwork-default.xml的前提下
xwork.xml 配置 :
1、增加攔截器
<interceptor-ref name="execAndWait">
<!-- 等待時間,執(zhí)行時間沒有超過此值,將不顯示等待畫面 (毫秒)-->
<param name="delay">1000</param>
<!-- 間隔檢查時間,檢查后臺進程有沒有執(zhí)行完畢,如果完成了它就立刻返回,不用等到等待,用戶不會看到等待畫面 -->
<param name="delaySleepInterval">50</param>
</interceptor-ref>
此攔截器必須放在所有攔截器的最后。
2、增加result
<result name="wait">wait.jsp</result>
如果沒有找到"wait"結(jié)果,WebWork會自動生成一個wait結(jié)果(\com\opensymphony\webwork\interceptor\wait.ftl).這個結(jié)果是用FreeMarker做的,所以需要Freemarker支持才能正常工作。如果你不想在程序中加入FreeMarker,那就必須自己實現(xiàn)一個wait結(jié)果。這一般來說是有必要的,因為默認(rèn)的wait頁面很簡單。
3、Action實現(xiàn)SessionAware接口
因為這個action將會以單獨的線程執(zhí)行,所以你不能用ActionContext,因為它是ThreadLocal.這也就是說如果你要訪問session數(shù)據(jù),你必須實現(xiàn) SessionAware結(jié)構(gòu)而不是調(diào)用ActionContext.getSesion() 。
public interface SessionAware{
public void setSession(Map map);
}
public abstract class AbsBasicAction extends ActionSupport implements SessionAware{
/** 當(dāng)前 Session */
protected Map session ;
public void setSession(Map session) {
this.session = session ;
}
}
4、實現(xiàn) wait 結(jié)果 映射的 wait.jsp
必須設(shè)置該頁面的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 閱讀(583) 評論(0) 編輯 收藏 所屬分類: WebWork