Jasper reports 如何将JRBeanCollectionDataSource列表传递给子报表

Jasper reports 如何将JRBeanCollectionDataSource列表传递给子报表,jasper-reports,ireport,Jasper Reports,Ireport,我正在从JRBeanCollectionDataSource生成报告。此报告是关于客户订单的 这是我的密码 public class Customer { private String customerName; private String customerNo; private String customerAddress; private ArrayList<CustomerOrder> customerOrders; //Getters

我正在从JRBeanCollectionDataSource生成报告。此报告是关于客户订单的

这是我的密码

public class Customer
{
    private String customerName;
    private String customerNo;
    private String customerAddress;
    private ArrayList<CustomerOrder> customerOrders;
    //Getters and Setters
}


private class CustomerOrder
{
    private String itemName;
    private BigDecimal amount;
    private int itemQuantity;
    //Getters and Setters
}

如何提取
Customer
中的
CustomerOrder
列表并将其作为子报表传递?

您应该能够为子报表设置数据源表达式:

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customerOrders})
生成的xml应具有类似于以下内容的子报表标记:

<subreport>
    <reportElement uuid="e9fc4a60-3844-41b7-a38c-768f06f09b44" x="0" y="57" width="555" height="68"/>
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customerOrders})]]></dataSourceExpression>
    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report2_subreport1.jasper"]]></subreportExpression>
</subreport>

您需要检查的另一件事是报告属性的
语言设置为
Java

<subreport>
    <reportElement uuid="e9fc4a60-3844-41b7-a38c-768f06f09b44" x="0" y="57" width="555" height="68"/>
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customerOrders})]]></dataSourceExpression>
    <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report2_subreport1.jasper"]]></subreportExpression>
</subreport>