我是Grails的新手,我正在使用Grails 2.0.1。我想为域类的对象中的更改添加持久性事件侦听器,因此我尝试了用户指南中给出的Bootstrap.groovy中的代码:
def init = {
applicationContext.addApplicationListener(new FooBarListener())
}
我收到以下错误消息:
错误context.GrailsContextLoader - 执行bootstraps时出错:没有这样的属性:类的applicationContext:BootStrap
如何从BootStrap类中获取 applicacionContext 属性? 或者文档是否过时,是否有新的/更好的方法来添加域更改侦听器?。
提前致谢。
答案 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())
}
}