gpt4 book ai didi

deployment - 在 iReport 中链接子报表,以便它们也可以在 Jasper 服务器中使用

转载 作者:行者123 更新时间:2023-12-04 02:03:29 24 4
gpt4 key购买 nike

使用 iReport v4.0.1 和 Jasperserver v4.1.0 我试图找到一种语法来将子报告链接到主报告,让我在 iReport 中测试它,然后通过存储库浏览器部署到服务器。

iReport 中子报表表达式的子报表的默认语法类似于

$P{SUBREPORT_DIR} + "mySubReport.jasper"

当您从 iReport 部署它时,它足够聪明,可以选择它并建议将其更改为
"repo:mySubReport.jrxml"

然后将所有子报表部署到主报表的资源文件夹。

太好了,但不幸的是,它随后在 iReport 中编辑文件以保存此更改,这意味着您无法再在 iReport 中运行报告,而无需手动重新编辑所有子报告表达式 - 这使得测试和部署到服务器的过程变得困难真的很痛苦,特别是当一个报告中有多个子报告时。

我想我至少可以将 $P{SUBREPORT} 的值设置为“repo:”或“My\local\filepath”,这样至少我只有一个地方可以更改它,但编译器没有像那样。

是否有替代结构或表达式可以正确解析为 repo:*.jrxml 或 My\local\filepath*.jasper 取决于您从哪里运行报告?

最佳答案

对此的最佳解决方案是添加一个附加参数,如 $P{IsOnServer} .将默认值设置为 true .对于您的子报表表达式,请使用:

$P{IsOnServer} ? "repo:mySubReport.jrxml" : "/local/path/to/mySubReport.jasper"

当您在 iReport 中运行报告时,系统会提示您输入 IsOnServer 的值。让它成为假的;子报表表达式将解析为您的本地文件。在服务器上,不要定义输入控件。永远不会提示用户输入该参数(他们甚至不知道它存在),并且会产生所需的“repo”语法。

一个更好的解决方案当然是让 iReport 自动处理这个……但现在你需要做这样的事情。

关于deployment - 在 iReport 中链接子报表,以便它们也可以在 Jasper 服务器中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7413216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com