服务的Grails会话范围未按预期工作

服务的Grails会话范围未按预期工作,grails,grails-services,Grails,Grails Services,我正在制作一个web应用程序,将各种类型的报告存储为域对象,因此我有一个域对象HeadOfHousehold,其中包含名称数据,以及对其他域对象的引用,例如报告,地址,以及任何从属对象。我正在尝试建立最近查看/创建的HeadOfHousehold对象列表。在多次谷歌搜索并仔细阅读手册后,一项服务似乎是一个合适的解决方案。因此,我创建了ClientListService: @Transactional class ClientListService { static scope = "se

我正在制作一个web应用程序,将各种类型的报告存储为域对象,因此我有一个域对象
HeadOfHousehold
,其中包含名称数据,以及对其他域对象的引用,例如
报告
地址
,以及任何从属对象。我正在尝试建立最近查看/创建的
HeadOfHousehold
对象列表。在多次谷歌搜索并仔细阅读手册后,一项服务似乎是一个合适的解决方案。因此,我创建了
ClientListService

@Transactional
class ClientListService {
    static scope = "session"
    String message // right now I'll be happy to just see the same message across 
                  // pages I can add a list and manipulate it later.
}
我想我可以在我的各种控制器中引用它,它会保持这样的状态:

def clientListService

def index(){
    hasSearched = false
    clientListService = new ClientListService(message: "Hello")
    [errorMessage: params.errorMessage, clients:clientListService]

}
应在以后的控制器中提供:

class HeadOfHouseHoldController {
     def clientListService
    def index() {

        [customer: HeadOfHousehold.get(params.id), clients: clientListService]
    }//...
但是,当我尝试获取消息时,它看起来好像对象为null。 从my index.gsp:

***************${clients?.message}********************
所以我不知道我是否没有正确地定义会话(我没有做任何特殊的事情来这样做),是否误解了会话范围的工作方式,或者其他什么。我确实在定义对象的原始页面上看到了正确的消息,但是在任何后续页面上都没有看到


而且,我不确定这是否是正确的方法;现在我真正需要的是我所需要的
HeadOfHouseholds
列表(这样我可以从其他页面添加到列表中),但是我可以看到可能会在这样一个类中添加其他逻辑和项。

我想你正确理解了
会话的范围。每个带有一个的Springbean都绑定到HTTP会话

但您的第一个控制器列表完全错误。您不应该自己实例化服务类。这就是Spring(Grails)所做的

这意味着你不能做类似的事情

clientListService = new ClientListService(message: "Hello")

并期望您的代码能够正常工作。希望这有帮助。

这正是我想要的,因此grails需要实例化该类,因为它将该类附加到当前会话,对吗?同时,我发现我可以将一个列表直接绑定到
会话
对象,并通过这种方式访问我需要的内容。一种技术比另一种更受欢迎吗?
clientListService = new ClientListService(message: "Hello")