在用freemarker用以下方式迭代list時報錯:
<#list list as map>
<#list map?keys as itemkey>
<#if itemkey="address">${map[itemkey]}</#if>
</#list>
</#list>
java.lang.IllegalArgumentException: freemarker.template.DefaultObjectWrapper didn't convert java.util.ArrayList to a TemplateHashModel. Generally, you want to use a Map<String, Object> or a JavaBean as the root-map (aka. data-model) parameter. The Map key-s or JavaBean property names will be the variable names in the template.
問題代碼:
List<Map<String, String>> list = new ArrayList<>();
list.add(dataMap1);
list.add(dataMap2);
list.add(dataMap3);
問題處理:給html傳值是以map鍵值對的形式,所以把list放到map裏就可以
List<Map<String, String>> list = new ArrayList<>();
list.add(dataMap1);
list.add(dataMap2);
list.add(dataMap3);
Map<String,Object> dataMap = new HashMap<>();
dataMap.put("list",list);
注:list裏放的是對象,對象修飾符必須爲public,否則freemarker模版讀取不到數據。