我正在使用iReport 3.5.0,我在主报告中使用子报告。我不想给出子报表表达式的绝对路径,但是例如,如果我只是将“bpSubReport.jasper”作为子报表表达式(因为sub和main在同一目录中),那么iReport可以找到bpSubReport.jasper并将主报告编译成bPReport.jasper,但我的Java(gwt)应用程序不能。它抛出异常
net.sf.jasperreports.engine.JRException: Could not load object from location : bpSubReport.jasper
您能帮助我了解如何为子报表提供相对路径并让Java应用程序使用。找到它?感谢。
答案 0 :(得分:4)
我得到了答案。
你做不到。您不能为子报表使用相对路径。您可以尝试在运行时或某些地方编译.jrxml文件,但相对路径似乎不适用于具有外部服务器或文件系统的项目。
答案 1 :(得分:2)
您可以使用:
Map paramater = new Hasmap();
paramater.put("SUBREPORT_DIR",source);// source is path your subreport
答案 2 :(得分:0)
将所有jrxml保存在资源下的报告文件夹中(在类路径中)。
参数已创建:
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["reports/"]]></defaultValueExpression>
</parameter>
创建了子报告元素:
<elementGroup>
<subreport>
<reportElement uuid="60c50685-03c7-452b-b37a-dda4a2092d18" positionType="Float" mode="Transparent" x="15" y="567" width="517" height="200" isRemoveLineWhenBlank="true" backcolor="#FFFFFF"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(yourList)]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "your_subreport.jasper"]]></subreportExpression>
</subreport>
</elementGroup>