java ireport 子报表_ireport向子报表传递参数详解

本文详细介绍了在使用jasperreport和ireport设计报表模板时,如何从Java后台向子报表传递参数,特别是关于Map类型的参数和数据集的处理。在Spring MVC环境中,通过设置子报表的Parameters和DataSource Expression,以及处理Map与List类型的参数转换,成功解决了编译错误问题,实现了子报表的数据展示。
摘要由CSDN通过智能技术生成

最近些日子一直在研究报表生成的模块,用的是jasperreport,用ireport来设计报表模板,涉及到后台像子报表传递参数。 java

后台采用的是springmvc+spring+spring data jpa, spring

在后台向子报表传递map参数时的步骤是: express

1.在Parameters添加一个同后台传递到子报表map同名的parameter mvc

fb25c3b147154cb69e2ebc20.html

2.设置subMap的属性 spa

fb25c3b147154cb69e2ebc20.html

3.设置子报表的属性 设计

Parameters Map Expression属性填写$P{subMap}, code

(tips:此项只能用来向子报表传递普通的参数,好比string类型参数subparam) ip

Map subMap = new HashMap();

subMap.put("subparam", "subparam display");

Connection type属性选择Use a datasource expression 开发

(tips:此项向子报表传递数据集,即List类型等可迭代的集合类型参数) get

而后再Data Source Expression中填写

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(((Map)$P{subMap})

.get("persons1"))

个人后台代码是

Map mainMap = new HashMap();

List persons1 = (new PersonsFactory()).getPersons();

subMap.put("persons1", persons1);

mainMap.put("subMap", subMap);

fb25c3b147154cb69e2ebc20.html

其中困扰了我好久的一点就是,按照高洪岩写的《Jasperreports + ireport报表开发详解》书中data source expression属性填写的格式为

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{subMap}.get("persons1"))

如此填写的后果实jasper文件编译没法经过,会报错

fb25c3b147154cb69e2ebc20.html

说object类型没有get()方法,并且Parameters参数类型中没有map类型,

fb25c3b147154cb69e2ebc20.html

只能选择父类型object,因此我把Object参数$P{subMap}强制转换为Map,再去获取其中的List,

((Map)$P{subMap}).get("persons1")

编译不报错,成功编译完成,

fb25c3b147154cb69e2ebc20.html

子报表map中List也能够正常传递显示。

fb25c3b147154cb69e2ebc20.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值