Jasper reports 如何将ArrayList传递给JasperReports?

Jasper reports 如何将ArrayList传递给JasperReports?,jasper-reports,Jasper Reports,我是新来的JasperReports。我想将ArrayList传递给子报表的子报表 我有一个主报告,其中包含一个子报告1,此子报告1封装了一个子报告 内有子报表2 现在如何将arrayList传递给subreport2 如MasterReport->SubReport->SubReport 注意:我正在使用iReport创建jasper模板,并将数据列表从我的DAO java类传递给jasper 下面是我的表单bean类 公共类CollatReportData扩展了BaseItem{ 私有列表l

我是新来的
JasperReports
。我想将
ArrayList
传递给子报表的子报表

我有一个主报告,其中包含一个子报告1,此子报告1封装了一个子报告
内有子报表2

现在如何将arrayList传递给subreport2

MasterReport->SubReport->SubReport

注意:我正在使用
iReport
创建jasper模板,并将数据列表从我的DAO java类传递给jasper

下面是我的表单bean类

公共类CollatReportData扩展了BaseItem{
私有列表listCusipData=null;
私有字符串dealerID=null;
私有字符串tripID=null;
私有字符串loanNo=null;
私有字符串dealerName=null;
私有字符串tripDealerLoan=null;
公共CollatReportData(){
超级();
}
公共列表getListCusipData(){
返回listCusipData;
}
public void setListCusipData(列表listCusipData){
this.listCusipData=listCusipData;
}
公共字符串getDealerID(){
返回dealerID;
}
public void setDealerID(字符串dealerID){
this.dealerID=dealerID;
}
公共字符串getTripID(){
返回tripID;
}
公共无效setTripID(字符串tripID){
this.tripID=tripID;
}
}//对于其他变量,依此类推。。
下面是我的DAO java类

public List getCollatData(字符串custName,字符串ctripid,
字符串dealerid,字符串userID){
最终连接conn=super.getCurrentConnection();
字符串sqlQueryTrip=null;
ResultSet rsCollat=null;
字符串tripID=null;
字符串dealerID=null;
字符串cusSysID=null;
字符串loanNo=null;
字符串txnNo=null;
字符串cusipNo=null;
字符串cusipStatus=null;
字符串parVal=null;
字符串tripDealerLoan=null;
字符串OldtripDealerLoan=“”;
字符串newTripDealRoan=“”;
CollatReportData reportData=null;
CusipData CusipData=null;
List listCusip=new ArrayList();
List CollatList=new ArrayList();
试一试{
编制报表;
sqlQueryTrip=“选择iscl\U系统id、iscl\U跳闸id、iscl\U跳闸\U经销商id,”
+“iscl客户系统id、iscl银行参考cd、iscl bdas数据库cd”
+“iscl\U贷款号、iscl\U txn\U号、iscl\U cusip\U号、iscl\U状态\U cd”
+iscl第二方、iscl第三方、iscl市场第三方、
+“scl优先来源cd、iscl商业价值、iscl成熟度”
+iscl备用、iscl备用、iscl备用价格、iscl备用系数
+iscl证券保证金,iscl证券保证金
+“来自BDS_DBA.INVCONF_SHELL_COLLAT”
+“其中iscl_cus_sys_id=”+custName+“”;
pstmtTrip=conn.preparest陈述(sqlQueryTrip);
rsCollat=pstmtrip.executeQuery();
如果(rsCollat!=null){
while(rsCollat.next()){
tripID=rsCollat.getString(“iscl_trip_id”);
dealerID=rsCollat.getString(“iscl_trip_dealer_id”);
loanNo=rsCollat.getString(“iscl_贷款编号”);
tripDealerLoan=tripID+dealerID+loanNo;
cusipData=新的cusipData();
cusipData.setTripID(tripID);
cusipData.setCusipNo(cusipNo);
setTripDealerLoan(tripDealerLoan);
listCusip.add(cusipData);
}//结束rsCollat
}//如果结束,则结束
CusipData cusipData1=新的CusipData();
List CusipList=newarraylist();
对于(int io=0;io
上面的DAO类返回列表,并通过Hashmap参数将此
Arraylist
传递给Jasper模板

下面是我的示例主jasper模板,从这里我将ArrayList传递给子报表


其中,
$p{list}
ArrayList
。并使用此列表在subReport1 Assual中打印

运行代码时,我遇到以下错误:

从bean:tripID检索字段值时出错


提前感谢您的帮助。

通过传递一个集合数据源来完成:
新BeanCollectionDataSource(yourArrayList)

然后获取
JasperPrint
对象:

JasperPrint jasperPrint = 
      JasperFillManager.fillReport(jasperReport, params, dataSource);
要传递到子报表,您有两个选项:

  • 如果它是每行的子报表,只需将数组作为bean的属性即可。例如,
    List
    其中
    某物
    具有类型为
    List
  • 如果它是整个报告的一个参数,则将其作为参数传递(
    params
    以上)