in velocity can you iterate through a java hashmap's entry set()?
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?
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().
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.
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
.