З 2.3.25 зробіть це так:
<#list user as propName, propValue>
${propName} = ${propValue}
</#list>
Зверніть увагу, що це також працює з нерядковими клавішами (на відміну від тих map[key]
, які мали писатись як map?api.get(key)
тоді).
До 2.3.25 стандартним рішенням було:
<#list user?keys as prop>
${prop} = ${user[prop]}
</#list>
Однак деякі справді старі інтеграції FreeMarker використовують дивну конфігурацію, де загальнодоступні Map
методи (наприклад getClass
) відображаються як ключі. Це відбувається, оскільки вони використовують чистий BeansWrapper
(замість DefaultObjectWrapper
), чиє simpleMapWrapper
майно було залишено false
. Вам слід уникати такої установки, оскільки вона змішує методи з реальними Map
записами. Але якщо ви зіткнетеся з такою невдалою установки, спосіб уникнути ситуації , використовує відкриті методи Java, такі як user.entrySet()
, user.get(key)
і т.д., а не з допомогою мови шаблонів конструкції , як ?keys
або user[key]
.