Depuis 2.3.25, faites-le comme ceci:
<#list user as propName, propValue>
${propName} = ${propValue}
</#list>
Notez que cela fonctionne également avec des clés sans chaîne (contrairement à map[key]
, qui devait être écrite comme map?api.get(key)
alors).
Avant 2.3.25, la solution standard était:
<#list user?keys as prop>
${prop} = ${user[prop]}
</#list>
Cependant, certaines intégrations FreeMarker vraiment anciennes utilisent une configuration étrange, où les Map
méthodes publiques (comme getClass
) apparaissent comme des clés. Cela se produit lorsqu'ils utilisent un pur BeansWrapper
(au lieu de DefaultObjectWrapper
) dont la simpleMapWrapper
propriété a été laissée active false
. Vous devriez éviter une telle configuration, car elle mélange les méthodes avec des Map
entrées réelles . Mais si vous avez cette configuration malheureuse, le moyen d'échapper à la situation en utilisant les méthodes Java exposées, telles que user.entrySet()
, user.get(key)
, etc., et ne pas utiliser les constructions de langage de template comme ?keys
ou user[key]
.