З 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].