会话变量在Grails中不起作用

时间:2015-01-06 08:00:16

标签: session grails

我尝试在一个控制器中创建新会话并设置变量并将此变量从会话转到另一个操作。但会话返回null值。我使用Grails 2.3.7。

class AuthorizationController {

    def signIn = {

       def session = request.getSession(true)
       session.setAttribute('username', 'zzzz')
       println(session.getAttribute('username')) // <-- here work
       redirect(action: logout)
    }

    def logout = {
        println(session.getAttribute('username')) // <-- here not work
    }
}

1 个答案:

答案 0 :(得分:2)

将您的代码更改为:

class AuthorizationController {

    def signIn() {
       session.username = 'zzzz'
       println(session.username)
       redirect(action: 'logout')
    }

    def logout() {
        println(session.username)
    }
}

您不必创建新会话,您可以直接使用控制器可用的session变量。此外,您不必使用getter&amp;塞特斯得到&amp;在会话上设置值。您可以直接使用它们,就像我在上面的代码中提到的那样。

如果您使用的是grails&gt; 2.x,避免在定义控制器操作时使用闭包。改为使用普通方法类型。