JasperReports:无法找到子报告

nKo*_*ito 5 java spring jasper-reports ireport

这让我发疯.最后时刻我试图找出为什么我的报告停止工作之后我添加了一个报表给它.我已经确认并尝试过所有类似的问题在这里,这里这里.没有成功..子报告肯定在同一个目录中..定义如下:

<subreport isUsingCache="false">
                <reportElement uuid="db816b3c-a13d-440f-a6a2-f899762e61e4" x="0" y="89" width="555" height="100"/>
                <subreportParameter name="footerAddress">
                    <subreportParameterExpression><![CDATA[$P{footerAddress}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="footerManager">
                    <subreportParameterExpression><![CDATA[$P{footerManager}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="footerContact">
                    <subreportParameterExpression><![CDATA[$P{footerContact}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportParameter name="footerBank">
                    <subreportParameterExpression><![CDATA[$P{footerBank}]]></subreportParameterExpression>
                </subreportParameter>
                <subreportExpression class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{SUBREPORT_DIR}]]></subreportExpression>
            </subreport>
Run Code Online (Sandbox Code Playgroud)

其中$ P {SUBREPORT_DIR}是 "/valid/path/sub.report.jasper"

我仍然收到一个错误: Resource not found at /valid/path/sub.report.jasper

为什么??

san*_*Bez 5

在第一条消息作者说:

在哪里$P{SUBREPORT_DIR}" /valid/path/sub.report.jasper"

$P{SUBREPORT_DIR}是一个目录,但不是文件名.这是第一个错误.

第二种:有时碧玉无法找到子报告,即使路径是正确的.

解决这个问题的方法:

  1. 传递$P{SUBREPORT_DIR}报告(在这种情况下:" /valid/path/"),把这个参数为HashMap<String, Object>-标准的方式传递参数到碧玉.
  2. $P{SUBREPORT_DIR} 从主报表传递到子报表作为参数:$P{SUBREPORT_DIR}主报表 - > $P{SUBREPORT_DIR}子报表(这种方式在存在子报表时使用,从子报表调用)
  3. 在主报表中将子表示的表达式设置为$P{SUBREPORT_DIR}+" sub.report.jasper"