我正在创建一个 JasperReports 的报告,其中只包含子报告。
以下是我目前面临的情景。
为简化问题,我们只考虑两个碧玉报告: mainReport和subReportFile1。
我的主要报告jasper文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 5.6.1.final using JasperReports Library version 5.6.1 -->
<!-- 2015-01-28T14:21:34 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="mainReport" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="84a1df53-5934-4d37-a3ae-44735dfd5dc3">
<property name="com.jaspersoft.studio.unit." value="pixel"/>
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="1936"/>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA["/my/file/path/jaspers/"]]></defaultValueExpression>
</parameter>
<parameter name="customObjectList" class="java.util.List"/>
<detail>
<band height="181" splitType="Stretch">
<subreport>
<reportElement x="0" y="3" width="554" height="157" uuid="782c39a9-1617-403c-b997-36f5cb9cdefd"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{malwareList})]]></dataSourceExpression>
<subreportExpression><![CDATA["/my/file/path/jaspers/subreport.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
</jasperReport>
子报表具有以下字段,我已为其创建了以下自定义bean类,并将其作为参数发送到主报表文件。 我有CustomBeanClass,其中包含以下字段:
String field1;
String field2;
private int field3;
int field4;
String field5;
String date;
我在我的java文件中执行以下行,但仍然得到一个空白的pdf报告文件。
JasperRunManager.runReportToPdfFile(path, "/home/neeraj/test.pdf",
parametersMap, new JREmptyDataSource());
参数map包含我发送到子报表的列表。这就是我想要做的。将bean列表的数据源发送到存在的其他子报表。
我哪里错了?
答案 0 :(得分:2)
主报告不包含任何记录(JREmptyDataSource),因此不处理详细信息带。不执行详细信息带中的子报告。
将子报表移动到标题区域。并设置报告属性“当没有数据类型”=“所有部分没有详细信息”