当前位置: 首页 > 知识库问答 >
问题:

如何在jrxml中迭代HashMap(Arraylist)?

曾成天
2023-03-14

我正在尝试迭代作为参数传递给jrxml的<code>HashMap</code>的值,在<code>HashMap</code>中,这些值作为<code>List</code>传递。

List<String> severity = // some values;
List<String> 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 report Jr XML中迭代这些< code>List?

共有2个答案

孟福
2023-03-14

我用这种方式将参数传递给我的碧玉。

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 上使报告符合您的要求,然后尝试传递您想要的参数。

崔涵亮
2023-03-14

您可以使用jasper报告创建一个新的数据源

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

此数据源可作为< code > data source expression 用于子报表:

<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{severity})]]></dataSourceExpression>

或者在< code>jr:table、< code>jr:list组件中使用子数据集时

<datasetRun subDataset="listDs" uuid="99b1de41-5185-4b8f-9cfe-011e7b4cf22d">
   <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{severity})]]></dataSourceExpression>
</datasetRun>

请注意,由于您的Bean是java原始类型(String)才能直接访问它,因此您需要使用此字段描述

<field name="_THIS" class="java.lang.String"/>

有关详细信息,请参阅以下内容:将基元类型对象列表作为子报表的数据源传递

 类似资料:
  • 问题内容: 我有这样的地图 现在,我必须迭代此Map,然后迭代该地图内的ArrayList。如何使用JSTL做到这一点? 问题答案: 你可以使用标签来遍历数组,集合和映射。 如果是数组和集合,则每次迭代var都会立即为你提供当前迭代的项目。 对于地图,每次迭代var都会为你提供一个Map.Entry对象,该对象又具有getKey()和getValue()方法。 在你的特定情况下,实际上是a Lis

  • 我想单独打印ArrayList中的每个值,即{1=[A,B,C,D],2=[E,F,G,H]} 如果用户输入2(即键),则输出应为E F G H

  • 这是hashmap,当我尝试迭代它并打印值时,例如,我从随机位置获得值。为什么不显示0.92,0.91,0.90。。。 迭代后的结果: 0.5 0.32 0.68 0.18 0.82 0.49 0.51 0.31 0.69 0.48 0.52 0.08 0.92 0.17 0.83 0.47 0.3 0.7 0.53 0.16 0.84 0.46 0.54 0.29 0.71 0.45 0.55

  • 问题内容: 我已经打电话给其中包含。 迭代地图时,如果与指定的字符串匹配,则需要从地图中删除键。 即 包含,但我无法从中删除密钥。 而是得到错误: 问题答案: 尝试: 使用Java 1.8及更高版本,您只需一行即可完成上述操作:

  • 问题内容: 我尝试了一个小时,但没有找到任何最佳方法来实现反向的哈希图迭代,这就是我拥有的哈希图。 我也看过TreeMap的例子, 但是treemap也按升序给出,我想要的是降序。 问题答案: Hashmap没有特定的顺序。但是您可以使用TreeMap。 也许这个简单的例子可以帮助您:

  • 我想在HashMap中搜索重复项。目前这是我的HashMap: