我正在为Java应用程序在主报告jrmxl中设置一个子报告。我目前正在使用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");
我的主要问题是在生成报告时,仅显示主报告的数据,而不打印子报告。我缺少一些配置以显示子报表?
答案 0 :(得分:1)
尝试一下,
将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");