将对象传递给jrxml,并将对象传递给其子报表

时间:2015-12-02 19:27:35

标签: java jasper-reports

我需要将对象和列表传递给jrxml文件。我在JRBeanCollectionDataSource中的参数map和list中发送对象。我需要将对象发送到子报告。 1.我应该为对象使用什么类(因为它不是原始数据类型,而是用户定义的类)。目前我使用了java.lang.Object。 2.在我看到的大多数例子中,List或Map都被发送到子报告。我需要传递Object。

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

2 个答案:

答案 0 :(得分:0)

您的主报告必须包含List或集合类型的字段。 必须在运行时填写此字段 您的子报告必须具有数据源:Expression JRBeanCollectionDataSource(您的字段名称),连接类型:使用数据源表达式,Subrepot Expression:您的参数。 Passe将子报告报告编译为此参数。

答案 1 :(得分:0)

您可以将对象数据作为数据源发送到JRXML。 此外,如果List也应作为数据源发送到JRXML。

首先设计iReport以接受Object作为数据源:
1)在iReport的class-path中添加项目“src” 2)在JRXML报告数据源中指定对象package.className 3)使用Object参数映射TextFields。

现在在源代码中,使用“JRBeanCollectionDataSource”类在“JasperFillManager.fillReport()”中为Connection发送对象列表。

希望这有帮助。