我有一个主报告,它调用一个子报告,该报告调用另一个子报告 我在报告工作室里有一个叫做dash2的所有3个。
当我在主报表上使用报表工作室部署到* JasperReports Server *时,它似乎也部署了第一个子报表(但不是子子报表)。好吧,如果我右键单击报告并选择编辑,然后选择控制和资源,它会列出子报告。
如果我逐个手动部署所有3个报告,我会在 Jaspersoft Studio 的报告文件夹中看到所有这三个报告。但是,如果我尝试运行主报告,我会得到:
Error filling report
net.sf.jasperreports.engine.JRException: Resource not found at : dash2/dash-kpi.jasper
所以它在dash2中寻找子报告。所以我在主报告文件夹下创建了一个名为dash2的目录,并将子报告复制到其中。同样的错误。所以我手动复制了与报告工作室相同的结构 - 没有快乐。它永远找不到子报告。
在主报告中,它有这个条目:
<subreportExpression><![CDATA["dash2/dash-kpi.jasper"]]></subreportExpression>
任何想法如何解决?
它在报告工作室中运行良好。
编辑:尝试删除&#34; dash2 /&#34;从资源名称前面。没有帮助。
Edit2:尝试将所有出现的dash2 / xxx.jasper发送到repo:xxx.jrxml。这打破了jasper工作室:
我尝试手动部署所有报告,但无法将主报告与jasper服务器中的现有子报告相关联。他们提供的唯一选择是编辑主报告,并手动上传jrxml文件作为资源。我尝试了这个,但没有帮助,仍然无法找到它们:
Repository file resource /reports/dashboard_files/dash_kpi.jrmxl could not be loaded
有趣的是,它使用了一个名为dashboard_files的目录,它不存在。在任何报告jrxml文件中都没有引用此目录。
答案 0 :(得分:2)
经过多次痛苦,我找到了解决方案。似乎jasper工作室对于嵌套的子报告并不是很好。这是一个高级别的解决方案,至少适用于服务器5.6和Studio 5.6:
注意1:如果您的子报告名称中有任何“ - ”,它们将转换为“”,它将找不到它们。使用“ - ”重命名所有子报表以使用“”insead,删除并重新部署。
注意2:现在您的报告无法在工作室中使用。好一个碧玉。您可以尝试使用参数,例如:
$P{IsOnServer} ? "repo:/reports/myreport_files/my_sub.jrxml" : "my_su.jasper"
并创建参数默认为true,但我无法使其工作。
这些家伙的主要功劳:
答案 1 :(得分:0)
我通过简单地不使用onServer参数克服了这个问题。 如果只放置文件名,Studio可以抓取此文件并自动部署。 奇怪的是,这也可以在服务器上运行。