java - struts2.3.12中servletactioncontext为空

标签 java struts2 java-ee-5

for (Cookie cookie : ServletActionContext.getRequest().getCookies()) {

上面的行给了我

java.lang.NullPointerException
        at interceptors.RemembermeInterceptor.intercept(RemembermeInterceptor.java:35)
        at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)

它曾经在 struts2.1.8 中工作正常,我刚刚将 POM.xml 中的 struts2 版本升级到 2.3.12,但它停止工作并出现上述错误。

最佳答案

此行中有两件事可能导致 NullPointerException:

for (Cookie cookie : ServletActionContext.getRequest().getCookies()) {
    如果在 HTTP 请求之外调用
  1. ServletActionContext.getRequest() 将返回 null。由于您是从拦截器调用该行,因此这似乎不太可能。

  2. 如果没有随请求发送 cookie,
  3. ServletActionContext.getRequest().getCookies() 将返回 null。尝试迭代空集合或数组将产生 NPE。

尝试按如下方式更改代码:

Cookie[] cookies = ServletActionContext.getRequest().getCookies();
if (cookies != null) {
  for (Cookie cookie : cookies) {
    // do something
  }
}

关于java - struts2.3.12中servletactioncontext为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16345876/

相关文章:

java - 如何在二维矩阵中找到成本最低的路径

javascript - 用javascript数组填充struts2 select标签

java - 如何在 Struts 2 中更改 JSESSIONID

java - JQuantlib 缺少扩展

java - "cascading" hibernate 实体监听器?

java - 一个类的所有依赖是否都由同一个类加载器加载?

java - 如何获取特定用户的所有 LDAP 组?

tomcat - 完整的 JEE 投诉容器如何不需要 sun-jaxws.xml

java - 仅在 Java 中通过查看字符串的特定部分来删除字符串数组的重复项

java - 在struts2中,如何使用注释来验证模型驱动的操作?