会话变量在 Grails 中不起作用

Session variables not working in Grails

我尝试在一个控制器中创建新会话并设置变量并将该变量从会话获取到另一个操作。但会话 return 为空值。我使用 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
    }
}

将您的代码更改为:

class AuthorizationController {

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

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

您不必创建新会话,您可以直接使用控制器可用的 session 变量。此外,您不必使用 getter 和 setter 来获取和设置会话中的值。您可以像我在上面的代码中提到的那样直接使用它们。

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