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 Mapmetody publiczne (takie jak getClass) pojawiają się jako klucze. Dzieje się tak, ponieważ używają one czystego BeansWrapper(zamiast DefaultObjectWrapper), którego simpleMapWrapperwłaściwość została pozostawiona false. Powinieneś unikać takiej konfiguracji, ponieważ łączy ona metody z prawdziwymi Mapwpisami. 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 ?keyslub user[key].