2015-12-02 190 views
0

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

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

在子报表中(我想是在详细的乐队中)你喜欢只显示1 TaxYearBean?或者您想显示TaxYearBean?中的所有LimitationBean,您可以发布一些您尝试过的相关jrxml吗? –

回答

0

你的主报告必须有类型列表或集合的一个领域。 此字段必须在运行时填充 您的子报表必须具有数据源:表达式JRBeanCollectionDataSource(您的字段名称),连接类型:使用数据源表达式,Subrepot表达式:您的参数。 将已编译的子报告报告传递给此参数。

0

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

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

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

希望这会有所帮助。