javascript - 如何将 Birt Report 中的对象传递给 HTML 动态文本(布局)

标签 javascript java eclipse birt rhino

我是 Eclipse 中的 BIRT 新手。我需要将对象从 BIRT 端传递到 HTML 动态文本(在布局中)

数据集的onFetch

json = {Name: row["Name"],
        Lastname: row["Lastname"],
        Date: row["Date"]};

数据集关闭之前

reportContext.setPersistentGlobalVariable("json", json);

以及布局中的动态文本

var str = <value-of>reportContext.getPersistentGlobalVariable("json")</value-of>;

我遇到错误未捕获的语法错误:意外的标识符

var str = [object Object];

有人能指出我正确的方向吗?知道如何在 Birt Report 和 JavaScript(HTML) 之间传递对象吗? 提前致谢!

最佳答案

您应该解释您想要实现的目标。 为什么您认为需要“将对象传递给 HTML 动态文本”?

BIRT 中有两种类型的动态文本项,您似乎将它们混合在一起:

动态文本项:您将值指定为 Javascript 表达式,例如如果您的数据集具有 NAME 列,则为“Hello world”或“Hello ” + row["NAME"]。

文本项:您将值指定为 HTML,例如 Hello World ,或你好行[“NAME”]。

这类似于 Java Servlet 与 Java Server Pages,两者可以做相同的事情,但以不同的方式。

这两者都要求您的布局元素可以访问数据集中的数据。这通常是通过将布局元素放置在绑定(bind)到数据集的表项或列表项中来完成的(请参阅属性中的“绑定(bind)”选项卡)。

为了简单起见,我建议忘记“文本项”并始终使用“动态文本项”。

你的语法 var str = ...;是一种不起作用的语法混合物。

在“动态文本项”内,您可能是指

reportContext.getPersistentGlobalVariable("json")

这不会给你一个语法错误,因为它是一个有效的 JavaScript 表达式。

但它不会像你想象的那样工作。 它会尝试将 JS 对象渲染为文本,结果可能是“[object Object]”。

请注意,BIRT 中的脚本编写发生在 BIRT 内部,而不是在浏览器中。

您真的想(使用 BIRT)生成一个包含 Javascript 的 HTML 页面,并在浏览器中执行该 Javascript 吗?

从未尝试过这个,但应该是可能的:

确保将“动态文本项”的类型设置为 HTML 并使用如下表达式:

("<script type=\"text/javascript\">\n" +
 "alert('Hello world');\n" +
 "</script>\n"
)

或动态内容:

("<script type=\"text/javascript\">\n" +
 "alert('Hello " + row["NAME"] + "');\n" +
 "</script>\n"
)

但这变得复杂:

要以这种方式传递 JSON 对象(而不是像 row["NAME"] 这样的简单字符串),您需要编写将 JSON 内容写入为 Javascript 源文本的代码。

关于javascript - 如何将 Birt Report 中的对象传递给 HTML 动态文本(布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62042478/

相关文章:

javascript - Bootstrap JavaScript 破坏了 ASP.NET 回发

javascript - 将 google 登录集成到我的网站

java - 需要数组,但找到 ArrayList<String>

java - container.createIfNotExists() 上出现空对象引用错误;

java - 为什么Android AudioRecord 初始化失败?

javascript - 如何在Vue项目中导入Mozilla PDF.js?

javascript - Angularjs 路由状态正在加载无限时间

java - 通过 servlet 将 pdf 流式传输到浏览器

java - 火星 eclipse 。 Java Spring - 用于构建环境的 Maven 配置文件切换

java - android代码并排合并两个视频并将其作为一个视频(只需要一个音频)