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>
FreeMarker doesn't support modifying collections. But if you really want to do this in FreeMarker (as opposed to in Java), you can use sequence concatenation: <#assign myList = myList + [newItem]> . Here you create a new sequence that wraps the two other sequences.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With