Od 2.3.25 zrób to w ten sposób:
<#list user as propName, propValue>
${propName} = ${propValue}
</#list>
Zwróć uwagę, że działa to również z kluczami niebędącymi łańcuchami (w przeciwieństwie do tych map[key]
, które musiały być zapisane tak jak map?api.get(key)
wtedy).
Przed 2.3.25 standardowym rozwiązaniem było:
<#list user?keys as prop>
${prop} = ${user[prop]}
</#list>
Jednak niektóre naprawdę stare integracje FreeMarker używają dziwnej konfiguracji, w której Map
metody publiczne (takie jak getClass
) pojawiają się jako klucze. Dzieje się tak, ponieważ używają one czystego BeansWrapper
(zamiast DefaultObjectWrapper
), którego simpleMapWrapper
właściwość została pozostawiona false
. Powinieneś unikać takiej konfiguracji, ponieważ łączy ona metody z prawdziwymi Map
wpisami. Ale jeśli napotkasz takim niefortunnym konfiguracji, tak aby uniknąć sytuacji korzysta odsłonięte metod Java, takich jak user.entrySet()
, user.get(key)
itp, a nie przy użyciu konstrukcji językowych jak szablon ?keys
lub user[key]
.