2013-06-30 48 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