Dalla 2.3.25, fallo in questo modo:
<#list user as propName, propValue>
${propName} = ${propValue}
</#list>
Nota che funziona anche con chiavi non stringa (a differenza di map[key], che dovevano essere scritte come map?api.get(key)allora).
Prima della 2.3.25 la soluzione standard era:
<#list user?keys as prop>
${prop} = ${user[prop]}
</#list>
Tuttavia, alcune integrazioni FreeMarker molto vecchie utilizzano una configurazione strana, in cui i Mapmetodi pubblici (come getClass) appaiono come chiavi. Ciò accade mentre usano un puro BeansWrapper(invece di DefaultObjectWrapper) la cui simpleMapWrapperproprietà è stata lasciata attiva false. Dovresti evitare una tale configurazione, poiché mescola i metodi con Mapvoci reali . Ma se si esegue in tale infelice configurazione, il modo per sfuggire alla situazione sta usando i metodi Java esposti, come ad esempio user.entrySet(), user.get(key)e così via, e non utilizzando i costrutti del linguaggio modello simile ?keyso user[key].