2014-10-28 50 views
-1

我正在使用Jasper-Reports 5.2.0并具有包含2个子报表的主报表。在Jasper Reports中将字段传递给子报表

我有一个型号ReportData其中包含两个属性:List<Feld> felderList<Wert> werte。这两个子模型包含多个属性,数据将显示在表中。

所以这就是我将数据源传递给子报告的方式。

<subreport> 
     <reportElement x="0" y="28" width="553" height="51" uuid="502d9559-e6bf-49c8-a34c-ffb8916634cd"/> 
     <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F(werte)]]></dataSourceExpression> 
     <subreportExpression><![CDATA["werte_subreport.jasper"]]></subreportExpression> 
</subreport> 

<subreport> 
     <reportElement x="0" y="90" width="555" height="50" uuid="5e5b0287-5002-4e31-aa8f-afe36ea78827"/> 
     <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F(felder))]]></dataSourceExpression> 
     <subreportExpression><![CDATA["felder_subreport.jasper"]]></subreportExpression> 
</subreport> 

,这就是我如何度过我的报告(数据源是ReportData集合):

printable = JasperFillManager.fillReport(PropertyLoader.getSingleton().loadAsInputStream(REPORT_FOLDER + File.separatorChar + KONFIG_JASPER),parameters, datasource); 

不知怎的,我的价值观是不传递到子报表和Jasper报表尝试使用属性作为defaultWert,它不是Wert类的一部分,应显示在子报告中。

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : defaultWert 
Caused by: java.lang.NoSuchMethodException: Unknown property 'defaultWert' on class XXXXXXXXXXXXXXXXXXXXXX.model.ReportData' 

我所定义的两个列表wertefelder作为主报告java.util.List类型的字段和定义的属性为defaultWert作为子报告类型为String的字段。我究竟做错了什么?

+0

我不明白为什么这个问题被标记为iText标记。 JasperReports使用iText和AFAIK的过时版本,目前iText和JasperSoft/TIBCO之间没有任何业务关系。我正在移除标签。 – 2014-10-28 16:07:54

+0

我不知道这种不存在的关系。我使用了这个标签,因为它被用在我问这个之前的很多问题中。 – shuricano 2014-10-28 16:13:01

+1

@shuricano您可以添加如何为您的问题创建数据源。你还有在主报告或子报告中定义的称为'defaultWert'的字段吗?我对这些问题的一般故障排除步骤是删除子报告,并确保主报告正常工作。一次只能添加一个子报告,因此我可以找到导致该问题的特定报告。 – 2014-10-29 02:20:53

回答

0

感谢您的回复,我刚刚发现问题......这是一个愚蠢的语法错误......它必须是我的JRE表达式中的$ F {felder}而不是$ F(felder)......它是现在工作正常!

相关问题