不支持的子报表部分在jaspersoft中键入ArrayList

时间:2017-10-30 17:29:51

标签: java jasper-reports subreport

我需要显示一个从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 个答案:

答案 0 :(得分:1)

子报表定义存在两个问题:

  1. subreportExpression应定义子报告.jasper文件
  2. 的路径
  3. 数据引用应作为dataSourceExpression传递。此外,JasperReport要求子报表数据源为JRDataSource的实例。
  4. 因此,可能的解决方案之一是将子报表声明修改为类似于

    的内容
    <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>