Desde 2.3.25, hazlo así:
<#list user as propName, propValue>
${propName} = ${propValue}
</#list>
Tenga en cuenta que esto también funciona con claves que no son cadenas (a diferencia de map[key]
, que tenía que escribirse como map?api.get(key)
entonces).
Antes de 2.3.25, la solución estándar era:
<#list user?keys as prop>
${prop} = ${user[prop]}
</#list>
Sin embargo, algunas integraciones de FreeMarker realmente antiguas usan una configuración extraña, donde los Map
métodos públicos (como getClass
) aparecen como claves. Eso sucede porque están usando un puro BeansWrapper
(en lugar de DefaultObjectWrapper
) cuya simpleMapWrapper
propiedad se dejó false
. Debe evitar esta configuración, ya que mezcla los métodos con Map
entradas reales . Pero si llegas a tener tal configuración desafortunado, la manera de escapar de la situación está usando los métodos de Java expuestas, tales como user.entrySet()
, user.get(key)
, etc., y no usar las construcciones del lenguaje como plantilla ?keys
o user[key]
.