`
javasunnyboy
  • 浏览: 75111 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Execute and Wait Interceptor 的使用

阅读更多

原文链接:http://hi.baidu.com/zhuyoulong/blog/item/aeb2f9edc55daa4d78f055e1.html

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'" />">

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics