首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

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

2012-12-27 
在grails框架中导入groovy脚本方法(四)前面都写了三个方法了,都不是能用的方法。这是最后的方法了……以上三

在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

热点排行