2010-01-12 85 views
35

你能在速度模板中做这样的事吗?in velocity你可以迭代一个java hashmap的条目set()吗?

#set ($map = $myobject.getMap()) 
#foreach ($mapEntry in $map.entrySet()) 
    <name>$mapEntry.key()</name> 
    <value>$mapEntry.value()</value> 
#end 

它输出空白标签,像这样:

<name></name> 

<value></value> 

我在做什么错?

+0

你试过看看会发生什么吗? – Mark 2010-01-12 15:37:06

+0

它输出空白标签 Ayrad 2010-01-12 15:41:18

回答

89

你的错误是指关键的方法(与结尾的“()”括号),而不是作为属性。尝试:

#set ($map = $myobject.getMap()) 
#foreach ($mapEntry in $map.entrySet()) 
    <name>$mapEntry.key</name> 
    <value>$mapEntry.value</value> 
#end 

换句话说,使用一个属性,像mapEntry.key,或该方法中,像mapEntry.getKey()

4

我正在寻找一种方式来循环速度中的HashMap,这也会起作用。

#set ($map = $myobject.getMap()) 
#foreach($key in $map.keySet()) 
     <name>$key</name> 
     <value>$resume.get($key)</value> 
#end 

就像你将通过Java中的HashMap循环的方式。

-1

为了澄清(我无法评论),一般来说,您可以使用Java get方法,或者使用相应的名称替换它们,而不使用小写字母,也不使用()

因此$mapEntry.getKey()map.key

0

这里的价值

itemsValue={data1=1,data2=2,data3=3} 

所以,我们需要遍历组的值;

foreach ($key in ${itemsValue.keySet()}) 
    if($itemsValue.get($key)==1) 
     Condition 
    end 
end 

在上面的代码中我们可以看到检查值会像 - “数据1,数据2等等......” 但使用get()后,我们就可以抽到了实例值。

相关问题