我尝试在以下Grails脚本中使用Grails服务
includeTargets << grailsScript("_GrailsInit")
target(loadGames: "The description of the script goes here!") {
def listFile = new File('list.txt')
listFile.eachLine {
def result = ctx.getBean("bggService").search(it)
println it + " " + result.length()
}
}
setDefaultTarget(loadGames)
我已经看过十几个不同的网页,每个网页都提供ctx
appCtx
和applicationContext
(以及许多其他)的不同组合作为建议,但没有一个他们工作。通常他们抱怨我尝试使用的上下文变量不存在。
为什么Grails只能在脚本中使用服务,就像在控制器中使用它们一样?
在Grails脚本中使用Grails服务的正确方法是什么?
答案 0 :(得分:2)
通过bootstrap
命令可以获得ApplicationContext
和grailsApplication
。添加_GrailsBootstrap
脚本,然后调用configureApp ()
或依赖它,以便在脚本中提供ApplicationContext
:
includeTargets << grailsScript("_GrailsInit")
includeTargets << grailsScript("_GrailsBootstrap")
target(loadGames: "The description of the script goes here!") {
depends(configureApp)
def listFile = new File('list.txt')
listFile.eachLine {
//Once configureApp() called ApplicationContext can be accessed as appCtx
def result = appCtx.getBean("bggService").search(it)
println it + " " + result.length()
}
}
setDefaultTarget(loadGames)