4

我正在使用 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 应用程序。也找到了吗?谢谢。

4

3 回答 3

4

嗯,我得到了答案。

你不能。您不能对子报表使用相对路径。您可能会尝试在运行时编译 .jrxml 文件等,但相对路径似乎不适用于具有外部服务器或文件系统的项目。

于 2010-08-02T11:56:01.230 回答
2

您可以使用:

Map paramater = new Hasmap();
paramater.put("SUBREPORT_DIR",source);// source is path your subreport
于 2010-09-11T01:21:34.760 回答
1

将所有 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>
于 2017-02-27T06:15:12.297 回答