¿Cómo pasar ArrayList a JasperReports?

Soy nuevo enJasperReports. Quiero pasarArrayList al subinforme del subinforme.

Tengo un informe maestro que contiene un subinforme1 y este subinforme1 encapsula uno
subreport2 dentro.

¿Ahora cómo pasar arrayList al subreport2?

Me gustaMasterReport -> SubReport -> SubReport

Nota: Estoy usandoiReport para crear una plantilla de jaspe y pasar datalist a jasper desde mi clase DAO java.

A continuación se muestra mi clase de bean de formulario

public class CollatReportData extends BaseItem {

    private List<CusipData> listCusipData = null;
    private String dealerID = null;
    private String tripID = null;
    private String loanNo = null;
    private String dealerName = null;
    private String tripDealerLoan = null;

    public CollatReportData() {
        super();
    }

    public List<CusipData> getListCusipData() {
        return listCusipData;
    }

    public void setListCusipData(List<CusipData> listCusipData) {
        this.listCusipData = listCusipData;
    }

    public String getDealerID() {
        return dealerID;
    }

    public void setDealerID(String dealerID) {
        this.dealerID = dealerID;
    }

    public String getTripID() {
        return tripID;
    }

    public void setTripID(String tripID) {
        this.tripID = tripID;
    }
} // and so on for other variables..

Mi clase Java de DAO está debajo

public List<Object> getCollatData(String custName, String ctripid, 
        String dealerid, String userID) {

    final Connection conn = super.getCurrentConnection();
    String sqlQueryTrip = null;
    ResultSet rsCollat = null;
    String tripID = null;
    String dealerID = null;
    String cusSysID = null;
    String loanNo = null;
    String txnNo = null;
    String cusipNo = null;
    String cusipStatus = null;
    String parVal = null;
    String tripDealerLoan = null;
    String OldtripDealerLoan = "";
    String NewtripDealerLoan = "";

    CollatReportData reportData = null;
    CusipData cusipData = null;
    List listCusip = new ArrayList<Object>();
    List CollatList = new ArrayList<Object>();
    try {
        PreparedStatement pstmtTrip;
        sqlQueryTrip = "SELECT iscl_sys_id, iscl_trip_id, iscl_trip_dealer_id, "
                + "iscl_cus_sys_id, iscl_bankref_cd, iscl_bdas_db_cd, "
                + "iscl_loan_no, iscl_txn_no, iscl_cusip_no, iscl_status_cd, "
                + "iscl_sec_de_tx, iscl_par_val_am, iscl_market_val_am, "
                + "scl_pri_source_cd, iscl_colla_mar_val_am, iscl_mature_dt, "
                + "iscl_sec_ty, iscl_sec_rt, iscl_sec_price_am, iscl_sec_factor, "
                + "iscl_sec_margin, iscl_sec_accrued_am "
                + "FROM BDS_DBA.INVCONF_SHELL_COLLAT "
                + "WHERE iscl_cus_sys_id='" + custName + "'";
        pstmtTrip = conn.prepareStatement(sqlQueryTrip);
        rsCollat = pstmtTrip.executeQuery();
        if (rsCollat != null) {
            while (rsCollat.next()) {
                tripID = rsCollat.getString("iscl_trip_id");
                dealerID = rsCollat.getString("iscl_trip_dealer_id");
                loanNo = rsCollat.getString("iscl_loan_no");

                tripDealerLoan = tripID + dealerID + loanNo;
                cusipData = new CusipData();
                cusipData.setTripID(tripID);
                cusipData.setCusipNo(cusipNo);
                cusipData.setTripDealerLoan(tripDealerLoan);

                listCusip.add(cusipData);
            } // end rsCollat
        } // end if
        CusipData cusipData1 = new CusipData();
        List CusipList = new ArrayList<Object>();

        for (int io = 0; io < listCusip.size(); io++) {
            cusipData1 = (CusipData) listCusip.get(io);
            NewtripDealerLoan = cusipData1.getTripDealerLoan();
            tripID = cusipData1.getTripID();
            dealerID = cusipData1.getDealerID();
            loanNo = cusipData1.getLoanNo();

            if (NewtripDealerLoan.equalsIgnoreCase(OldtripDealerLoan) || OldtripDealerLoan.equalsIgnoreCase("")) {
                CusipList.add(cusipData1);

            }
            if (!NewtripDealerLoan.equalsIgnoreCase(OldtripDealerLoan)) {
                reportData = new CollatReportData();
                reportData.setTripID(tripID);
                reportData.setTripDealerLoan(NewtripDealerLoan);
                reportData.setListCusipData(CusipList);
                //and so on
                //........
                CollatList.add(reportData);

                CusipList = null;
            }
            OldtripDealerLoan = NewtripDealerLoan;
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println("Inside LoanDetailDAO:strTripQuery:Exception" + sqlQueryTrip + e);
    }

    return CollatList;
}

la clase DAO anterior devuelve List y pasa estoArraylist a la plantilla de Jasper a través de Hashmap Param.

A continuación se muestra mi plantilla de jaspe maestro de muestra, desde aquí estoy pasando ArrayList a subReport como

     <parameter name="list" isForPrompting="false" class="java.util.List"/>

     <detail>
        <band height="100"  isSplitAllowed="true" >
            <subreport  isUsingCache="true">
                <reportElement
                    x="30"
                    y="20"
                    width="170"
                    height="40"
                    key="subreport-1"/>
                <dataSourceExpression><![CDATA[new JRBeanCollectionDataSource( $P{list})]]></dataSourceExpression>
                <subreportExpression  class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "Collateral_SubReport1.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </detail>

dónde$p{list} esArrayList. y use esta lista para imprimir en subReport1 asusual

mientras ejecuto el código, obtengo el siguiente error:

Error retrieving field value from bean : tripID

Gracias de antemano por su ayuda.

Respuestas a la pregunta(3)

Su respuesta a la pregunta