Freemarker iterating over hashmap keys

tzador picture tzador · Sep 30, 2009 · Viewed 109.8k times · Source

Freemarker has two collection datatypes, lists and hashmaps Is there a way to iterate over hashmap keys just as we do with lists?

So if I have a var with data lets say:

user : {
  name : "user"
  email : "[email protected]"
  homepage : "http://nosuchpage.org"
}

I would like to print all the user's properties with their value. This is invalid, but the goal is clear:

<#list user.props() as prop>
  ${prop} = ${user.get(prop)}
</#list>

Answer

skaffman picture skaffman · Sep 30, 2009

Edit: Don't use this solution with FreeMarker 2.3.25 and up, especially not .get(prop). See other answers.

You use the built-in keys function, e.g. this should work:

<#list user?keys as prop>
    ${prop} = ${user.get(prop)}
</#list>