从GroovyShell脚本访问Grails域类

时间:2011-01-17 12:49:52

标签: grails groovy

我正在尝试使用GroovyShell来评估Grails应用程序中的一些代码片段,但我似乎无法访问我们的Grails域类。例如,当我尝试评估这样的事情时:

Eval.me("my.package.MyDomainClass.get(1)")

我看到这样的错误:

groovy.lang.MissingPropertyException: No such property: my for class: Script1

关于如何让它发挥作用的任何想法?

感谢。

1 个答案:

答案 0 :(得分:6)

我想出了如何让它发挥作用。默认情况下,GroovyShell实例会在其自己的类加载器中清楚地评估脚本,因此您的Grails工件都不可用。有一个替代构造函数,你可以传入另一个类加载器,所以这在Grails应用程序的上下文中做了我需要的(例如在grails console内运行时):

def shell = new GroovyShell(this.class.classLoader)
shell.evaluate("my.package.MyDomainClass.get(1)")