【问题标题】:Invoke script under scripts folder from grails controller从 grails 控制器调用脚本文件夹下的脚本
【发布时间】:2015-07-06 06:37:03
【问题描述】:

在我的 Grails 应用程序中,我试图从控制器调用脚本文件夹下的脚本

控制器代码

def invokeScript(){
        def bg= ["groovy","scripts/masterScript.groovy", request.JSON]
        bg.execute();
        render("Script Invoked")
    }

ma​​sterScript.groovy

println("Master Script Invoked with arguements " + args[0]);

预期输出

在控制台上:“使用争论调用主脚本” 响应:脚本调用

实际输出

控制台上没有打印消息,但响应是准确的“已调用脚本”

如果我从命令提示符显式调用 masterScript,它可以正常工作并在控制台上打印。

请帮助并澄清以下内容

  1. 为什么当从 Controller 调用时,控制台上的脚本看不到任何消息
  2. 我可以在脚本文件夹中的脚本中设置调试断点吗,因为它是异步调用。

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    .execute() 返回Process 实例,该实例具有访问输出、错误和状态码的方法。

    所以回答“1”:因为您不会将命令的输出复制到控制台。请参阅文档:http://www.groovy-lang.org/groovy-dev-kit.html#process-management

    对于“2”:您不能,因为您将脚本称为外部进程。如果你想评估 Groovy 脚本,而不是调用普通的外部命令,最好使用GroovyScriptEngine

    【讨论】:

    • 你成就了我的一天。现在挣扎了3个小时。太感谢了。效果很好。
    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    相关资源
    最近更新 更多