2013-05-02 48 views
1
for (Cookie cookie : ServletActionContext.getRequest().getCookies()) { 

上面一行是給我servletactioncontext空在struts2.3.12

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和它停止工作給我上面的錯誤。

回答

2

有兩件事情,可能會導致一個NullPointerException在這條線:

for (Cookie cookie : ServletActionContext.getRequest().getCookies()) { 
  1. ServletActionContext.getRequest()將返回null如果它被稱爲HTTP請求之外。既然你從攔截器調用那條線,那看起來不太可能。

  2. ServletActionContext.getRequest().getCookies()如果沒有與請求一起發送的cookie,將返回null。嘗試遍歷一個空集合或數組將產生一個NPE。

試着改變你的代碼如下:

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

Exaclty。這可能是一個巧合,它在2.1上工作,也許cookie在升級後被刪除了......如果你仍然有2.1版本,嘗試清除cookie,它可能會給你同樣的錯誤 – 2013-05-03 09:29:47