首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

使用Struts2拦截器execAndWait后request,session为null的解决办法

2012-09-13 
使用Struts2拦截器execAndWait后request,session为null的解决方法1.execAndWait拦截器的配置方法??? 在str

使用Struts2拦截器execAndWait后request,session为null的解决方法

1.execAndWait拦截器的配置方法

??? 在struts.xml中按照以下格式写

??? <action name="..." class="...">
????? <interceptor-ref name="defaultStack">

????? </interceptor-ref>
????? <interceptor-ref name="execAndWait">
????? <param name="excludeMethods">input</param>
????? <!-- 等待时间,执行时间没有超过此值,将不显示等待画面 (毫秒) -->
????? <param name="delay">1000</param>
????? <!-- 间隔检查时间,检查后台进程有没有执行完毕,如果完成了它就立刻返回,不用等到等待,用户不会看到等待画面? -->
????? <param name="delaySleepInterval">50</param>
????????? <resultname="wait">wait.jsp</result>
????? </interceptor-ref>
?? </action>


2.request,session为null的解决方法

??? 因为这个action将会以单独的线程执行,所以你不能用ActionContext,因为它是ThreadLocal.这也就是说如果你要访问 session数据,你必须实现 SessionAware接口而不是调用ActionContext.getSesion() 。同理,要去到request要实现RequestAware接口。

public class SomeAction extends ActionSupport implements SessionAware, RequestAware{
??? protected Map<String, Object> session;
???? protected Map<String, Object> request;
????? @Override
???? public void setSession(Map<String, Object> session) {
???????? this.session = session;
???? }
??? ?
???? @Override
???? public void setRequest(Map<String, Object> request) {
???????? this.request = request;
???? }

}

?

?

?

热点排行