子报表的相对路径

时间:2010-07-29 08:58:04

标签: java gwt relative-path ireport subreport

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

3 个答案:

答案 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>