我工作的Grails。我的要求是让每个用户整个应用程序,直到用户的会话对象是可用的。启动后,当我登录时的用户我的应用程序,之后我把一个对象的会话。
Object object = Object.findById(idName)
session.object = object
在控制器时,我需要这个目标我只是写这句法。
Object object = session.object
有时也被我得到这个语法对象。
Object object = Object.findById(session.object?.id)
有时他们返回确切的对象,有时它返回null。我没有得到我在哪里犯错。
会话跟踪每个应用程序的用户 - 当你把东西在一个用户的会话是只存在于他的,其他会话保持不变。
从你说的话,你要的对象是存在的应用范围。为了这个目的,你可以使用参数servletContext - http://grails.org/doc/latest/ref/Controllers/servletContext.html。
在引导您可以使用它像这样:
def init = {
servletContext ->
Object object = Object.findById(idName)
servletContext.setAttribute('myObject', object)
}
在此之后,对象将在通过所有控制器可用
servletContext.getAttribute('myObject')