in velocity can you iterate through a java hashmap's entry set()?

匿名 (未验证) 提交于 2019-12-03 02:45:02

问题:

Can you do something like this in a velocity template?

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

it outputs blank tags like so:

<name></name>  

and

<value></value>  

What am I doing wrong?

回答1:

Your mistake is referring to key and value as methods (with trailing "()" parenthesis) instead of as properties. Try this:

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

In other words, use either a property, like mapEntry.key, or the method, like mapEntry.getKey().



回答2:

I'm looking for a way to loop through a HashMap in velocity, and this will work too.

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

Just like the way you would loop through a HashMap in java.



回答3:

Here the Value

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

So , we need to iterate the group of value;

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

In the above code we can see check the value will be like -"data1,data2 etc ..." but after using the get(), we can able to get the instance value.



回答4:

To clarify (I cannot comment), in general you can use either the Java get methods, or replace them by the corresponding name without with a small letter and without ().

So $mapEntry.getKey() or map.key.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!