【发布时间】:2010-09-13 16:49:38
【问题描述】:
我将 iReport 工具与 JasperReports 1.3.4 结合使用。
我有一个主报告,其中包含两个子报告。这些子报表之一具有嵌入式子报表。所有 .jasper 文件都位于同一目录中。
iReport 生成了名为SUBREPORT_DIR 的参数。 subreportExpression 将子报表文件名表示为![CDATA[$P{SUBREPORT_DIR} + "subreport.jasper"]。
从 iReport 中生成报告时一切正常。但是,我有一个小型 Java Web 应用程序,我正在尝试使用它来生成报告。我将"SUBREPORT_DIR" 参数传递给JasperFillManager.fillReport(String sourceFileName, Map parameters, JRBeanCollectionDatasource)。这个SUBREPORT_DIR设置为主报告所在的目录。
fillReport 抛出异常:
net.sf.jasperreports.engine.JRException: Could not load object from location :
.sub-subreport.jasper.
似乎第一个子报表正在尝试处理其subreport(embedded subreport),但SUBREPORT_DIR 没有被解析,或者没有被正确用于生成子子报表的名称。
我有什么遗漏吗?这种情况应该如何处理?
【问题讨论】:
-
从异常消息看来,您使用的是“。”作为 SUBREPORT_DIR 参数。如果是这样,请尝试使用“./”或仅使用“.”
-
把“./”放在哪里?我很困惑
-
现在我想你正在使用:parameters.put("SUBREPORT_DIR", "."); JasperFillManager.fillReport(String sourceFileName, Map parameters, JRBeanCollectionDatasource);尝试使用:parameters.put("SUBREPORT_DIR", "");
-
在 java 类 Param 中,我将参数设置为 ..param.put("SUBREPORT_DIR",filepath) where filepath =request.getSession(true).getServletContext().getRealPath("/jsps/ jrxmls/") 。根据您的建议,我如何将其更改为“”。然后它将传递空值对吗?
-
它将传递一个空字符串值。这将使主报表在其当前路径中查找其子报表。另外,您的 .jasper 文件是否与 .jrxml 文件位于同一文件夹中?
标签: java jasper-reports