struts2.3.12中的servletactioncontext null

时间:2013-05-02 19:08:10

标签: 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并且它停止工作,给我上述错误。

1 个答案:

答案 0 :(得分:2)

在这一行中有两件事可能导致NullPointerException:

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

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

  4. 尝试更改代码,如下所示:

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