Grails从会话中存储的实例中获取null值

时间:2014-01-10 12:04:08

标签: hibernate grails httpsession

我正在研究grails。我的要求是在每个用户的整个应用程序中获取一个对象,直到用户的会话可用。以用户身份登录后启动我的应用程序后,我将对象放入会话中。

Object object = Object.findById(idName)
session.object = object

在我需要这个对象的控制器中,我只写这个语法。

Object object = session.object

有时我也会用这种语法来获取该对象。

Object object = Object.findById(session.object?.id)

有时它们会返回确切的对象,有时会返回null。 我没有得到我犯错的地方。

1 个答案:

答案 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')