Jasper Subreport只在首页填充-Java



我有一个主报表,在组页脚中有一个子报表。目标是在每个页面上显示此子报表。在Jaspersoft Studio中,这非常有效,但当我在Spring服务中编译并填充模板时,子报表只在第一页上填充。当我把";所有部分无细节";对于";当"无数据类型"时;,我只看到列标题。我花了好几个小时试着调试,但没有成功。下面是jrxml和java代码。

JRXML

<groupFooter>
<band height="144">
<subreport>
<reportElement x="70" y="90" width="642" height="30" uuid="47af6568-4e1c-4dc4-8688-dfb4d6e17bbc"/>
<dataSourceExpression><![CDATA[$P{TEMPLATE_DATA}]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{TEMPLATE_XML}]]></subreportExpression>
</subreport>
</band>
</groupFooter>

Java代码

Map<String, Object> parameters = new HashMap<>()
parameters.add("TEMPLATE_XML", compiledSubReport)
List<entity> entityList = util.getEntities()
JRBeanCollectionDataSource data = new JRBeanCollectionDataSource(entityList)
parameters.add("TEMPLATE_DATA", data)
return JasperFillManager.fillReport(mainReport, parameters, mainDataSource)

数据源对象不能多次使用,每次显示子报表时都需要创建一个新对象。

您可以将entityList作为参数传递给报表,然后将其用于子报表:

<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{ENTITY_LIST})]]></dataSourceExpression>

最新更新