2016年1月3日 星期日

freemarker - Java :遍歷Hashmap

template中遍歷Java傳來的HashMap參數

因為不是Freemarker自己類型的Map,所以不能直接用下列方式取值遍歷:

<list map?keys as key>
${key} : ${map[key]}
</list>


原因是Freemarker判斷map可以用點(".")的方式得到的都為其擁有的名值對,所以會把map的所有Java api method名稱都列出來,例如put, keySet, entrySet ...

以下才是正確的遍歷方式:

Java碼:
HashMap testMap = new HashMap();
testMap.put("t1", "tt1");
testMap.put("t2", "t2");
this.context.put("testMap", testMap);

Template碼:
<#list testMap.entrySet() as entry>
${entry.getKey()} = {entry.getValue()}
</#list>


<#list testMap.keySet() as key>
${key} = ${testMap.get(key)}
</#list>