什么是request.getSession(false)?

时间:2015-02-03 07:41:12

标签: java-ee grails

我目前正在进入Grails in Action一书,其中作者正在TagLib类下编写一个名为loginToggle的自定义标签

我不太了解request.getSession(false)的内容

def loginToggle = {
    out << "<div style='margin: 15px 0 40px;'>"
    if (request.getSession(false) && session.user){
        out << "<span style='float:left; margin-left: 15px'>"
        out << "Welcome ${session.user}."
        out << "</span><span style='float:right;margin-right:15px'>"
        out << "<a href='${createLink(controller:'brewUser', action:'logout')}'>"
        out << "Logout </a></span>"
    } 
    else{
        out << "<span style='float:right;margin-right:10px'>"
        out << "<a href='${createLink(controller:'brewUser', action:'login')}'>"
        out << "Login </a></span>"
    }
    out << "</div><br/>"
}

好书BTW

1 个答案:

答案 0 :(得分:5)

以上代码表示,如果有会话(但不创建会话)并包含用户。

检查文档:

  

HttpSession getSession(boolean create)

     

返回与此请求关联的当前HttpSession,如果没有当前会话且create为true,则返回新会话。

     

如果create为false且请求没有有效的HttpSession,则此方法返回null。

     

要确保正确维护会话,必须在提交响应之前调用此方法。如果容器使用cookie来维护会话完整性,并且在提交响应时要求它创建新会话,则抛出IllegalStateException。

     

参数:

     

create - 如果需要,可以为此请求创建新会话;如果没有当前会话,则返回false

     

返回:

     

与此请求关联的HttpSession,如果create为false且请求没有有效会话,则为null

     

另见:

     

getSession()