博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ireport向子报表传递参数详解
阅读量:5746 次
发布时间:2019-06-18

本文共 1269 字,大约阅读时间需要 4 分钟。

  hot3.png

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

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

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

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

2.设置subMap的属性

3.设置子报表的属性

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

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

Map
subMap = new HashMap
();subMap.put("subparam", "subparam display");

Connection type属性选择Use a datasource expression

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

然后再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);

 

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

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

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

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

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

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

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

子报表map中List<Persons>也可以正常传递显示。

转载于:https://my.oschina.net/buwei/blog/167951

你可能感兴趣的文章
C#日期格式化
查看>>
MarkdownPad2.5 注册码
查看>>
MongoDB--Getting Started with Java Driver
查看>>
date命令
查看>>
Redis代码阅读之Hacking Strings
查看>>
【云计算】Cloudify-基于TOSCA规范的开源云应用编排系统
查看>>
atitit.编程语言 类与对象的 扩展机制.doc
查看>>
Codeforces Beta Round #8 A. Train and Peter KMP
查看>>
读取文件最后一行的两种方式
查看>>
struts2 页面向Action传参方式
查看>>
Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解
查看>>
qt sleep
查看>>
视频格式(转的豆瓣)
查看>>
laravel 5.1 的程序性能优化(配置文件)
查看>>
PasswordHasher
查看>>
Python之re模块 —— 正则表达式操作
查看>>
【HDU 5818多校】Joint Stacks
查看>>
iOS 跳转到系统的设置界面-b
查看>>
北航数值分析作业一
查看>>
企业会计准则第39号——公允价值计量
查看>>