在 iReport 中初始化 HashMap 变量



我想在iReport(3.7.3)中创建一个变量$V{myMap},并用这个初始化一个Map:

"key1":"value1","key2":"value2","key3:"value3" ...

然后在我的报告中,我将有一个带有此表达式的文本字段:

$V{myMap}.get("key1")

我必须得到

"value1"

我必须遵循哪些步骤才能获得它?


我在这里读到:

如何在JasperReport中使用java Hashmap作为变量

设置变量属性的步骤如下:

在变量上设置以下属性:

Name: myMap
Variable class: java.util.HashMap()
Reset type: None
Calculation: System
Variable expression: new java.util.HashMap()

但是初始化它呢?

我知道我可以使用时髦并使用本文中的地图:

http://groovy.codehaus.org/Collections

但我不知道该遵循哪些步骤。

提前感谢您分享您的知识!

这是创建变量的方法

<variable name="myMap" class="java.util.HashMap" resetType="None" calculation="System">
    <variableExpression><![CDATA[['key1':'value1', 'key2':'value2', 'key3':'value3']]]></variableExpression>
</variable>

然后使用它:

$V{myMap}.get("key1")

会得到

value1

如果您需要使用单个条目创建一个单一的、不可变的映射,您可以使用 Collections.singletonMap():

<variable name="hints" class="java.util.Map">
    <initialValueExpression><![CDATA[Collections.singletonMap("key", "value")]]></initialValueExpression>
</variable>

要获取该值,请执行以下操作:

$V{hints}.get("key")

我会尝试使用属性initial value expresion并尝试使用以下内容初始化哈希映射:

new HashMap<String , String>() {{
put(stringkey1, stringvalue1);
put(stringkey2, stringvalue2);
put(stringkey3, stringvalue3);
}};

最新更新