2014-07-05 64 views
1

我在struts2中使用SessionAware,但是當我獲得會話的值時,它返回null。我的動作類別和方法是 -ActionContext.getContext()。getSession()返回null

public class CustomLocation extends ActionSupport implements SessionAware{ 
private Map<String, Object> sessionMap; 

public String prepareEditCustomLocationForm()throws Exception{ 
    //----some code here------// 
    sessionMap.put("LocEditId", id); 
    return SUCCESS; 
} 


public String editCustomLocation() throws Exception{ 
Map session = (Map) ActionContext.getContext().getSession(); // it returns null 
int id=(Integer)session.get("LocEditId"); 
//----------some code----------// 
retutn SUCCESS; 
} 


@Override 
public void setSession(Map<String, Object> map) { 
this.sessionMap = map;  
} 

} 
+0

檢查sessioMap有getter和setter方法。 – hari

+0

如果您正在使用'SessionAware',爲什麼您要從'ActionContext'獲取會話? –

回答

1

有兩種方法可以獲取到動作的會話映射。

  1. 實施SessionAware。默認情況下,會話映射在動作調用中填充。這是一個更好的方法。
  2. 從動作上下文獲取會話映射。這樣你應該確保請求是由struts2過濾器處理的。

嘗試

public String editCustomLocation() throws Exception{ 
    int id=(Integer)sessionMap.get("LocEditId"); 
    //----------some code----------// 
    retutn SUCCESS; 
}