admin管理员组

文章数量:1642793

在用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模版读取不到数据。

本文标签: DefaultObjectWrapperConvertFreemarkertemplateArrayList