How to pass a List of JRBeanCollectionDataSource to a subreport

ireport, jasper-reports

Solution

You should be able to set the datasource expression for the subreport:

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customerOrders})

The resulting xml should have a subreport tag that resembles:

<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>

The only other thing you need to check is that the `Language` for the report properties is set to `Java`.

Problem

I am generating a report from a JRBeanCollectionDataSource. This report is about a customer's order. This is my code ``` 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 } ``` When a customer a report containing the customer details and a list of the customer orders need to be generated. Since `JRBeanCollectionDataSource` takes a collection, this is what i did. ``` Customer cust; //Customer Instance ArrayList<Customer> custList = new ArrayList<Customer>(); custList.add(cust); JRBeanCollectionDataSource rptData = new JRBeanCollectionDataSource(custList); ``` How can i extract the `CustomerOrder` list in `Customer` and pass it as a subreport?

Original source