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