java - 为什么我们不能使用 ServletActionContext 来使用 execAndWait 拦截器?

标签 java struts2 thread-local struts2-interceptors actioncontext

我必须在 Struts2 中的选定操作上使用加载栏,并且正在使用 ServletActionContext,但收到 NullPointerException

ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);

如果我从 xml 配置文件中删除 execAndWait 拦截器,它就可以正常工作。

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

有什么解决办法吗?

最佳答案

ActionContextThreadLocal,当您通过 execAndWait interceptor 运行后台线程时,它没有请求对象。 .

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

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

关于java - 为什么我们不能使用 ServletActionContext 来使用 execAndWait 拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441738/

相关文章:

java - ThreadLocal共享数据?

java - 为什么以及如何避免 Maven 在 mvn 包上的 jsp 中替换 ${id}

java - Java 中的 ActionPerformed 方法

java - 动态改变文本框JTextArea的大小

java - 如何上传文件(txt,pdf)并在同一网页中显示它?

javascript - 将参数从 anchor 标记发送到 struts2 操作

java - 直接从 YouTube 下载 FLV 时出现 403 Forbidden

struts2 - 如何在jsp中使用open Id

Java-ThreadLocal 与 ConcurrentHashMap

java - 当未调用 set() 方法时,ThreadLocal get() 给出意外结果