我需要显示一个从bean中获取数据的复杂报告。
我已经创建了一个容器bean,它已经获得了其他bean的列表。
public class OreComputateContainerBean implements Serializable{
private static final long serialVersionUID = 1L;
private Long id;
private List<ViewOreGiorniMeseTotBean> listViewOreGiorniMeseTotBean;
private List<ViewOreComputateMeseBean> listViewOreComputateMeseBean;
private List<ViewOreComputateBean> listViewOreComputateBean;
}
在关于Tibco Jaspersoft的主要报告中,我添加了子报告,并创建了一个像
这样的字段<field name="listViewOreGiorniMeseTotBean" class="java.util.List"/>
子报表的构建如下:
<subreport>
<reportElement x="280" y="0" width="171" height="83" uuid="a0bfc3a5-e452-4f3e-a875-2eaaf7f367e6"/>
<subreportExpression><![CDATA[$F{listViewOreGiorniMeseTotBean}]]></subreportExpression>
</subreport>
当我尝试在我的应用程序中构建报表时,我看到以下异常
net.sf.jasperreports.engine.JRRuntimeException: Unsupported subreport section type java.util.ArrayList
如何构建子报表以正确显示数据?
答案 0 :(得分:1)
子报表定义存在两个问题:
subreportExpression
应定义子报告.jasper
文件dataSourceExpression
传递。此外,JasperReport要求子报表数据源为JRDataSource的实例。因此,可能的解决方案之一是将子报表声明修改为类似于
的内容<subreport>
<reportElement x="280" y="0" width="171" height="83" uuid="a0bfc3a5-e452-4f3e-a875-2eaaf7f367e6"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{listViewOreGiorniMeseTotBean})]]></dataSourceExpression>
<subreportExpression><![CDATA[subreport_path_relative_to_SUBREPORT_DIR_variable.jasper"]]></subreportExpression>
</subreport>