我尝试在一个 Controller 中创建新 session 并设置变量,然后将此变量从 session 获取到另一个操作。但 session 返回空值。我使用 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 ,您可以直接使用 Controller 可用的session
变量。此外,您不必使用 getter 和 setter 来获取和设置 session 中的值。您可以直接使用它们,就像我在上面的代码中提到的那样。
如果您使用的是 grails > 2.x,请避免在定义 Controller 操作时使用闭包。请改用普通方法类型。
关于 session 变量在 Grails 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794404/