如何在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:tablejr: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来制作您想要的报告,然后尝试传递您想要的参数。