freemarker.template.DefaultObjectWrapper didn't convert java.util.ArrayList to a TemplateHashModel

在用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模版讀取不到數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章