【问题标题】:How to set the values in session?如何在会话中设置值?
【发布时间】:2013-06-27 20:06:53
【问题描述】:

如果我的会话是空的,我需要设置一些值来播放动作类。所以,这里是方法

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");
}

【问题讨论】:

  • 那么你的getSession的返回类型是什么。你是说HttpSession吗?

标签: java servlets struts2 struts httpsession


【解决方案1】:

使用代码:

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");
}

假设您已通过实现SessionAware 将会话注入到操作中。

该值是一个不包含任何值的徒手对象,但您可以为其创建一个构造函数并直接传递该值。

【讨论】:

    【解决方案2】:

    getSession() 如果未找到现有会话,将返回一个新会话。所以你不必担心这个会返回 null。不过请注意,HttpSession 下没有get() 方法,它是getAttribute()

    所以你可以这样做:

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

    【讨论】:

    • 如果 OP 使用 SessionAware,则会话是映射,而不是 HttpSession。 OP 没有提供足够的细节。
    • 好点戴夫,错过了。无论如何,另一个答案已经涵盖了。谢谢。
    猜你喜欢
    • 2012-01-22
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    相关资源
    最近更新 更多