我正在研究grails。我的要求是在每个用户的整个应用程序中获取一个对象,直到用户的会话可用。以用户身份登录后启动我的应用程序后,我将对象放入会话中。
Object object = Object.findById(idName)
session.object = object
在我需要这个对象的控制器中,我只写这个语法。
Object object = session.object
有时我也会用这种语法来获取该对象。
Object object = Object.findById(session.object?.id)
有时它们会返回确切的对象,有时会返回null。 我没有得到我犯错的地方。
答案 0 :(得分:0)
为每个应用程序用户跟踪会话 - 当您在一个用户的会话中放置某些内容时,它只存在于其他会话中,其他会话保持不变。
根据您的说法,您希望对象在应用程序范围内呈现。为此,您可以使用servletContext - http://grails.org/doc/latest/ref/Controllers/servletContext.html。
在Bootstrap中你可以像这样使用它:
def init = {
servletContext ->
Object object = Object.findById(idName)
servletContext.setAttribute('myObject', object)
}
之后,对象将通过
在所有控制器中可用servletContext.getAttribute('myObject')