java将对象传递给jrxml,并将对象传递给其子报表
我需要向jrxml文件传递一个对象和一个列表。我正在JRBeanCollectionDataSource的参数映射和列表中发送对象。我需要将对象发送到子报表。 1.我应该为对象使用什么类(因为它不是基本数据类型,而是用户定义的数据类型)。目前我已经使用了java。lang.Object。 2.在我看到的大多数示例中,列表或地图都发送到子报告。我需要传递对象
HashMap<String, Object> parameterMap = new HashMap<String, Object>();
parameterMap.put("json", taxYearReportBean.getTaxYearBean());
jasperPrint = JasperFillManager.fillReport(path, parameterMap, new JRBeanCollectionDataSource(taxYearReportBean.getSmallIssList()));
jp.add(jasperPrint);
类别:
public class TaxYearBean{
Date startDate;
Date endDate;
String method;
List<LimitationBean> limitationList = new ArrayList<LimitationBean>();
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public List<LimitationBean> getLimitationList() {
return limitationList;
}
public void setLimitationList(List<LimitationBean> limitationList) {
this.limitationList = limitationList;
}
}
# 1 楼答案
您可以将对象数据作为数据源发送到JRXML。 此外,如果列表也应作为数据源发送到JRXML
首先设计iReport以接受对象作为数据源:
1) 在iReport的类路径中添加项目“src”
2) 指定对象包。JRXML报表数据源中的类名
3) 使用对象参数映射文本字段
现在在源代码中,使用“JRBeanCollectionDataSource”类发送“JasperFillManager.fillReport()”中的对象列表以进行连接
希望这有帮助
# 2 楼答案
主报表必须具有列表或集合类型的字段。 必须在运行时填写此字段 子报表必须具有以下数据源:表达式JRBeanCollectionDataSource(您的字段名)、连接类型:使用数据源表达式、子报表表达式:您的参数。 将编译的子报表传递到此参数