jaspersoft 中不支持的子报表部分类型 ArrayList

Unsupported subreport section type ArrayList in jaspersoft

我需要展示一个从 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

我需要如何构建子报表才能正确显示数据?

您的子报表定义有两个问题:

  1. subreportExpression 应该定义子报表 .jasper 文件的路径
  2. 数据引用应作为 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>