首页 > 解决方案 > Birt 脚本数据源 Javascript 代码未执行

问题描述

我正在尝试从 Birt 的脚本数据源选项中的 RESTful API 获取 json 响应。所以我指的是这个 Actuate 的教程 Actuate 的脚本数据源教程和这个在 Stackoverflow 之前提出的关于 RESTful API 的Birt 问题。所以我使用数据源和数据集的对应open()fetch()方法来定义js代码。但问题是,即使我尝试使用 simple 进行调试,js 代码也根本不会执行window.alert("test");

它给出了这个例外:

org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor handleJS
WARNING: Fail to execute script in function __bm_OPEN(). Source:

ReferenceError: "window" is not defined. (/report/data-sources/script-data-source[@id="4"]/method[@name="open"]#5)
org.eclipse.birt.data.engine.core.DataException: Fail to execute script in function __bm_OPEN(). Source:

我应该将依赖项或 jar 添加到scriptlib文件夹中吗?还是这是其他问题?提前致谢。

编辑:

似乎警报功能不起作用,因为他们在服务器端脚本中使用了 Rhino。那么有什么方法可以调试脚本吗?

标签: javascriptdatasourcebirt

解决方案


不要将 BIRT 的 Javascript 与浏览器中的 Javascript 混淆!

更令人困惑的是:您可以在 BIRT 的不同阶段使用 Javascript,其中一些在浏览器中查看输出时可以工作......

BIRT 使用 Javascript,但不知道 alert() 或 window 对象。这些仅在脚本在浏览器中运行时才定义。

大多数 BIRT 脚本在生成时发生 - 而不是在浏览器中(例如,将其与 node.js 进行比较)。

如果要输出调试消息,请通过在脚本中调用 Java vom 来执行此操作。


推荐阅读