读书人

在grails框架中导入groovy脚本步骤(四

发布时间: 2012-12-27 10:17:10 作者: rapoo

在grails框架中导入groovy脚本方法(四)
前面都写了三个方法了,都不是能用的方法。这是最后的方法了……
以上三种方法都不支持导入功能,例如:在你的外部script中加入:
import MyProject.domain.User;
这时你就可以把user作为一个对象 开始应用了!
这是我的script:

def query1={String dd=User.findByName("license")?.value //在这里我使用了grails里domain的方法: println dd } def query2={  println "this is query3"  query1.run()    //这是闭包之间的调用; }

在主程序里面这样写:

File scriptFile = new File("controllers\\${scriptName}")      Script script = new GroovyClassLoader().parseClass(scriptFile).newInstance()        script.binding = new Binding(["service2": new PluginService(), "params": params])                                return script.run()

oK就可以了
当然这也有很多的不足,这里面只能支持闭包,无法调用方法,如果我在运行script时,不是想运行这个script而是运行它里面的一个方法,怎么办?
我是这样解决的:
在主程序中导入一个参数:methodName,这是你所应用script中方法的名称。
File scriptFile = new File("controllers\\${scriptName}")      Script script = new GroovyClassLoader().parseClass(scriptFile).newInstance()        script.binding = new Binding(["service2": new PluginService(), "params":params])if(methodName){   //如果调用脚本时有method传入,则……return script.invokeMethod(methodName,binding)  }else{return script.run()}                       

这个方法已经测试过了,可以应用啊!
………… 1 楼 agile_boy 2012-06-25 不建议在Grails这样使用Groovy

读书人网 >网络基础

热点推荐