1
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,它停止工作给我上述错误。

4

1 回答 1

2

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

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

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

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

Cookie[] cookies = ServletActionContext.getRequest().getCookies();
if (cookies != null) {
  for (Cookie cookie : cookies) {
    // do something
  }
}
于 2013-05-02T19:21:19.507 回答