[freemarker] Map のデータでループを回す
Freemarker で Map のデータの一覧を表示させようとしたのだが、Java で EntrySet を利用するような感じで実現する方法はわからなかった。
Java なら以下のようなコードを書くのだが。
for( Map.Entry entry : map.entrySet ) { System.out.println(entry.key() + " = " + entry.value()); }
で、結局どうしたかというと、キーのリストでループを回せば実現できた。?keys を利用することで Map のキー集合を取得することができる。ちなみに ?values で値集合も取得できる。
<#assign map = {"aaa":"111", "ccc":"333", "bbb":"222"}> <#list map?keys as key> ${key} = ${map[key]} </#list>
aaa = 111 ccc = 333 bbb = 222
Java で書くとこんな感じ。こっちの方がシンプルだった・・・
for( Object key : map.keySet() ) { System.out.println(key + " = " + map.get(key)); }
あと freemarker では ?sort によってコレクションをソートできることを知った。
<#assign map = {"aaa":"111", "ccc":"333", "bbb":"222"}> <#list map?keys?sort as key> ${key} = ${map[key]} </#list>
aaa = 111 bbb = 222 ccc = 333
なんてことはないが、今日は ?keys ?values ?sort を覚えた。