我必须在 Struts2 中的选定操作上使用加载栏,并且正在使用 ServletActionContext
,但收到 NullPointerException
。
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
如果我从 xml 配置文件中删除 execAndWait
拦截器,它就可以正常工作。
有些人建议我使用SessionAware
。为什么会这样?
有什么解决办法吗?
最佳答案
ActionContext
是 ThreadLocal
,当您通过 execAndWait
interceptor 运行后台线程时,它没有请求对象。 .
如果您使用SessionAware
,那么您应该有 servletConfig
interceptor在堆栈上,以便能够在执行操作之前将 session 对象设置为您的操作。
解决方案:如果您可以让ServletRequestAware
为操作设置请求对象,并在堆栈中的execAndWait
拦截器之前使用servletConfig
拦截器。如果您需要创建自定义堆栈,您应该保留顺序。
关于java - 为什么我们不能使用 ServletActionContext 来使用 execAndWait 拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441738/