Java 为什么我们可以';是否使用ServletActionContext使用execAndWait拦截器?

Java 为什么我们可以';是否使用ServletActionContext使用execAndWait拦截器?,java,struts2,thread-local,struts2-interceptors,actioncontext,Java,Struts2,Thread Local,Struts2 Interceptors,Actioncontext,我必须在Struts2中的选定操作上使用加载栏,并且使用ServletActionContext,但是获取NullPointerException ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST); 如果我从xml配置文件中删除execAndWaitinterceptor,它可以正常工作 有人建议我使用SessionAware。为什么会这样 有什么解决方案吗?当您通过运行后台线程时,Act

我必须在Struts2中的选定操作上使用加载栏,并且使用
ServletActionContext
,但是获取
NullPointerException

ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
如果我从xml配置文件中删除
execAndWait
interceptor,它可以正常工作

有人建议我使用
SessionAware
。为什么会这样


有什么解决方案吗?

当您通过运行后台线程时,
ActionContext
ThreadLocal
,它没有请求对象

如果您使用的是
SessionAware
,那么在执行操作之前,您应该在堆栈上设置会话对象,以便能够将会话对象设置为您的操作

解决方案:如果您可以获得
ServletRequestAware
将请求对象设置为操作,并在堆栈中的
execAndWait
拦截器之前使用
servletConfig
拦截器。如果需要创建自定义堆栈,则应保持顺序