Sejak 2.3.25, lakukan seperti ini:
<#list user as propName, propValue>
${propName} = ${propValue}
</#list>
Perhatikan bahwa ini juga berfungsi dengan kunci non-string (tidak seperti map[key]
, yang harus ditulis seperti map?api.get(key)
itu).
Sebelum 2.3.25 solusi standarnya adalah:
<#list user?keys as prop>
${prop} = ${user[prop]}
</#list>
Namun, beberapa integrasi FreeMarker yang sangat lama menggunakan konfigurasi yang aneh, di mana Map
metode publik (seperti getClass
) muncul sebagai kunci. Itu terjadi karena mereka menggunakan murni BeansWrapper
(bukan DefaultObjectWrapper
) yang simpleMapWrapper
propertinya tertinggal false
. Anda harus menghindari pengaturan seperti itu, karena ini mencampur metode dengan Map
entri yang sebenarnya . Tetapi jika Anda mengalami pengaturan malang tersebut, cara untuk melarikan diri situasi ini menggunakan metode Java yang terkena, seperti user.entrySet()
, user.get(key)
, dll, dan tidak menggunakan konstruksi bahasa template seperti ?keys
atau user[key]
.