首页 > 解决方案 > jasper 2.0.5 中的子报告未显示在主报告 pdf 中

问题描述

我正在我的主报告 jrmxl 中为我的 java 应用程序设置一个子报告。我目前正在使用 iReports 2.0.5 进行开发,无法使用其他版本。

当我运行测试以生成带有我的报告的 pdf 时,在日志中它似乎识别它并运行 stringquery 并在输出中设置参数,但在 pdf 中只出现主要报告数据。

这是主要的报告子报告标签

<jasperReport
         name="triageSummary"
         columnCount="1"
         printOrder="Vertical"
         orientation="Portrait"
         pageWidth="595"
         pageHeight="842"
         columnWidth="519"
         columnSpacing="0"
         leftMargin="51"
         rightMargin="25"
         topMargin="20"
         bottomMargin="20"
         whenNoDataType="NoPages"
         isTitleNewPage="false"
         isSummaryNewPage="false">
    <property name="ireport.scriptlethandling" value="0" />
    <property name="ireport.encoding" value="UTF-8" />
    <import value="java.util.*" />
    <import value="net.sf.jasperreports.engine.*" />
    <import value="net.sf.jasperreports.engine.data.*" />

    <parameter name="SubRel_Cabecalho" isForPrompting="false" class="java.net.URL"/>

    <subreport  isUsingCache="true">
        <reportElement
            x="1"
            y="3"
            width="481"
            height="18"
            key="subreport-1"/>
        <subreportParameter  name="I_LANG">
            <subreportParameterExpression><![CDATA[$P{ID_LANGUAGE}]]></subreportParameterExpression>
        </subreportParameter>
        <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
        <subreportExpression  class="java.net.URL"><![CDATA[$P{SubRel_Cabecalho}]]></subreportExpression>
    </subreport>

</jasperReport>

在我的 java 中,我配置了一个 Hibertante 连接以生成报告并将参数作为资源传递

this.putParameterResource("SubRel_Cabecalho", "/reports/audit/edis_audit_cabecalho_analise.jasper");

我的主要问题是当我生成报表时,只显示主报表的数据,不打印子报表。为了显示子报告,我缺少一些配置?

标签: javajasper-reports

解决方案


试试这个,

定义SubRel_Cabecalho为数据类型为 `class="java.lang.String" 的参数

<parameter name="SubRel_Cabecalho" isForPrompting="false" class="java.lang.String/>

然后用它来传递子报表文件路径

HashMap<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("SubRel_Cabecalho", "/reports/audit/edis_audit_cabecalho_analise.jasper");

推荐阅读