javascript - 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。那么有什么方法可以调试脚本吗?
解决方案
不要将 BIRT 的 Javascript 与浏览器中的 Javascript 混淆!
更令人困惑的是:您可以在 BIRT 的不同阶段使用 Javascript,其中一些在浏览器中查看输出时可以工作......
BIRT 使用 Javascript,但不知道 alert() 或 window 对象。这些仅在脚本在浏览器中运行时才定义。
大多数 BIRT 脚本在生成时发生 - 而不是在浏览器中(例如,将其与 node.js 进行比较)。
如果要输出调试消息,请通过在脚本中调用 Java vom 来执行此操作。
推荐阅读
- postgresql - Typeorm获取ID数组列的关系
- javascript - 是否有用于检查 cookie 自动删除的 JS 浏览器 API?
- python-2.7 - PYTHON - 从 Azure Cosmos DB 的集合中删除项目
- reactjs - React Component:更新组件,基于另一个没有关系的组件
- angular - 用字符串修补值
- spring - 如何将标头添加到 URI
- puppeteer - 为什么 puppeteer 向我显示 DOMEXCEPTION :“无法在“文档”上执行 'querySelector'?
- javascript - Node js在完成多行代码之前执行函数
- selenium - 如何执行相同的黄瓜功能或场景 n 次?
- javascript - 箭头函数中的Expo Sound