首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在web应用程序中使用子报表

在web应用程序中使用子报表
EN

Stack Overflow用户
提问于 2014-08-01 12:20:23
回答 2查看 1.3K关注 0票数 1

我在服务器端生成我的报告(不是JasperReports服务器,而是不同的)。添加子报表服务器时,无法找到子报表的路径。我的主要报告在"reports“目录中,我在"reports”中创建了新目录,即"/subreports",因此子报告的路径是"reports/subreports/ report _1“。在XML文件中,我设置了这个路径。

代码语言:javascript
复制
 <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
            <defaultValueExpression><![CDATA["/subreports/"]]></defaultValueExpression>
    </parameter>

在子报表的路径属性上,我设置了$P{SUBREPORT_DIR} +“子报表”

这会有什么问题呢?

EN

回答 2

Stack Overflow用户

发布于 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编译器。

代码语言:javascript
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2014-08-01 12:48:46

如果报表位于参数SUBREPORT_DIR定义的正确文件夹中,则需要使用双引号+扩展名:

代码语言:javascript
复制
$P{SUBREPORT_DIR}+"MySubreport.jrxml"

调用报表的XML应该如下所示:

代码语言:javascript
复制
<subreportExpression><![CDATA[$P{SUBREPORT_DIR}+"MySubreport.jrxml"]]></subreportExpression>

还要确保报表名称和资源ID相同,包括扩展名。

此外,请记住jasperserver将报告保存在自己的DB中。因此,我怀疑它是否适用于远程链接:请参见以下问题:

what is the physical path that Jasperserver store its resources?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25080147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档