在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>