我在服务器端生成我的报告(不是JasperReports服务器,而是不同的)。添加子报表服务器时,无法找到子报表的路径。我的主要报告在"reports“目录中,我在"reports”中创建了新目录,即"/subreports",因此子报告的路径是"reports/subreports/ report _1“。在XML文件中,我设置了这个路径。
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["/subreports/"]]></defaultValueExpression>
</parameter>在子报表的路径属性上,我设置了$P{SUBREPORT_DIR} +“子报表”
这会有什么问题呢?
发布于 2015-03-16 03:33:20
我就是这样做的。我正在使用一个Spring网络应用程序。我在WEB中创建了一个名为reports的文件夹。这里我有我的主要报表--没有编译的report_main.jrxml,比如说,subreport.jasper,和子报表编译了,然后,在report_main内部,我将子报表对象的属性子报表表达式设置为$P{SUBREPORT_DIR} + "subreport.jasper"。
$P{SUBREPORT_DIR}是主报表的输入变量,其类型为string,它将包含子报表所在的物理路径。我在运行时在我的web应用程序上获得了这个物理路径,然后像这样将它传递给jasper编译器。
String fullPath = servletContext.getRealPath("WEB-INF/reports");
Map<String, Object> params = new HashMap<String, Object>();
params.put("SUBREPORT_DIR", fullPath );
JasperReport report = JasperCompileManager.compileReport(fileName);
JasperPrint print = JasperFillManager.fillReport(report, params);发布于 2014-08-01 12:48:46
如果报表位于参数SUBREPORT_DIR定义的正确文件夹中,则需要使用双引号+扩展名:
$P{SUBREPORT_DIR}+"MySubreport.jrxml"调用报表的XML应该如下所示:
<subreportExpression><![CDATA[$P{SUBREPORT_DIR}+"MySubreport.jrxml"]]></subreportExpression>还要确保报表名称和资源ID相同,包括扩展名。
此外,请记住jasperserver将报告保存在自己的DB中。因此,我怀疑它是否适用于远程链接:请参见以下问题:
what is the physical path that Jasperserver store its resources?
https://stackoverflow.com/questions/25080147
复制相似问题