我想在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);
}};