如何在jrxml中迭代HashMap(Arraylist)?
我试图将作为参数传递的HashMap
的值迭代到jrxml,在HashMap
,值作为List
传递。
例
List severity = // some values; List messages = // some values; LinkedHashMap parameters = new LinkedHashMap(); parameters.put("severity", severity); parameters.put("messages", messages); jPrint = JasperFillManager.fillReport(jasperreport,parameters,new JREmptyDataSource()); JasperExportManager.exportReportToPdfStream(jPrint,baos);
如何在jasper报告jrxml中迭代这些List
?
您可以使用jasper report创建新的数据源
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{severity})
此数据源可用作子报表作为dataSourceExpression
:
或者在jr:table
, jr:list
components中使用subDataset时
请注意,因为您的Bean是一个java原始类型(String)来直接访问它,您需要使用此字段描述
有关更多信息,请参阅此内容: 将基元类型对象列表作为子报表的数据源传递
我用这种方式将参数传递给我的jasper。
Map parameters = new HashMap(); // idProd is the name of the parameter in my file .jrxml parameters.put("idProd", product.getProductId()); // reportPath is the direction of the .jasper file. // dataSource is my db conection. jasperPrint = JasperFillManager.fillReport(reportPath, parameters, dataSource.getConnection());
编辑:你想用报告分组吗? 例如。
- 小狗
- 猫
- 等等
或许多单独的报告? 在这种情况下,您应该重新考虑jrxml文件的结构。
此外,您应首先尝试使用jasper报告的IDE来制作您想要的报告,然后尝试传递您想要的参数。