在Grails的GORM中添加更改侦听器

时间:2012-03-21 16:33:48

标签: grails gorm grails-2.0

我是Grails的新手,我正在使用Grails 2.0.1。我想为域类的对象中的更改添加持久性事件侦听器,因此我尝试了用户指南中给出的Bootstrap.groovy中的代码:

def init = {
    applicationContext.addApplicationListener(new FooBarListener())
}

我收到以下错误消息:

  

错误context.GrailsContextLoader - 执行bootstraps时出错:没有这样的属性:类的applicationContext:BootStrap

如何从BootStrap类中获取 applicacionContext 属性? 或者文档是否过时,是否有新的/更好的方法来添加域更改侦听器?。

提前致谢。

3 个答案:

答案 0 :(得分:8)

我所知道的最短路是

class BootStrap {

   def grailsApplication

   def init = { servletContext ->
      def applicationContext = grailsApplication.mainContext
   }
}

答案 1 :(得分:2)

import org.codehaus.groovy.grails.commons.ApplicationAttributes

class BootStrap {

    def init = {servletContext ->

        def applicationContext = servletContext.getAttribute(ApplicationAttributes.APPLICATION_CONTEXT) 
    }
}

答案 2 :(得分:-2)

applicacionContext必须在BootStrap中定义。以下应该工作

     class BootStrap {
       def applicacionContext 

    def init = {
     applicationContext.addApplicationListener(new FooBarListener())
    }

   }