如何从JSP或Java代码传递JasperReport中的参数值?

vic*_*cky 4 java jasper-reports

我已成功创建报告并成功导出到HTMLPDF.然而,这是一个静态报告.我有一个查询:

select * from personal where id= 'val' 
Run Code Online (Sandbox Code Playgroud)

我想Java/JSP在运行时发送此参数"val" .这该怎么做 ?

Har*_*hra 15

创建包含参数的Map,并将参数作为键值对.

Map parametersMap = new HashMap();  
parametersMap.put("id",7);
Run Code Online (Sandbox Code Playgroud)

从JSP生成Jasper Report时:

JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, parametersMap, jdbcConnection);
Run Code Online (Sandbox Code Playgroud)

parametersMapshoud 中的键与报表模板中定义的参数相同.

因此,在报告模板(jrxml)中声明参数:

<parameter name="id" class="java.lang.Integer"/>
Run Code Online (Sandbox Code Playgroud)

在Jasper Report中查询查询中的参数

select * from personal where id= $P{id}
Run Code Online (Sandbox Code Playgroud)

  • 如果您的问题得到解决,您应该将问题标记为“已解答”。在 i-Report 中选择要打印的部分。定义字段 $F{id}。顺便说一句,这是另一个问题。:) (2认同)

小智 0

您不能选择 *,您必须指示要从中获取数据的列名称。使用commDB.query执行查询,然后将结果传递给commDBResult,运行循环,将每一行记录放入数组列表中,然后使用jasper生成报告