2013-06-30 46 views
2

如果我得到空會話,我需要設置一些值來播放動作類。所以,這裏是方法如何設置會話中的值?

public SearchFilters getFilters() { 
return (SearchFilters) getSession().get("Filters"); 
} 

我想檢查會話,如果它是null,然後我需要在這裏設置一些值。

public SearchFilters getFilters() { 
if(getSession().get("Filters").equals(null)){ 
---- //How to set the values and return ? 
} 
return (SearchFilters) getSession().get("Filters"); 
} 
+0

那你的getSession的返回類型是什麼。你是指HttpSession? – pikrut

回答

0
public SearchFilters getFilters() { 
if(getSession().get("Filters") == null){ 
    //How to set the values 
    getSession().put("Filters", new Filters()); 
} 
// and return. 
return (SearchFilters) getSession().get("Filters"); 
} 

假設你已經注入了會議到由getter方法實現SessionAware後得到的動作。該值是自由手形對象,不包含任何值,但可以爲其創建構造函數並直接傳遞值。

0

getSession()如果找不到現有的會話將返回一個新的會話。所以你不必擔心這個返回null。但請注意,HttpSession中沒有get()方法,它的編號爲getAttribute()

所以,你可以這樣做:

public SearchFilters getFilters() { 

    if(getSession().getAttribute("Filters") == null) { 
     getSession().setAttribute("Filters", new SearchFilters()); 
    } 

    return (SearchFilters) getSession().getAttribute("Filters"); 
} 
+1

如果OP使用SessionAware,會話是一個映射,而不是HttpSession。 OP沒有提供足夠的細節。 –

+0

好點戴夫,錯過了。無論如何,其他答案已涵蓋。謝謝。 – Jops