FreeMarker2.3.20遍历HashMap嵌套序列值报错如何解决?
报错原因
- 你没有提前给
values变量赋值就直接使用,且${}语法仅支持输出可自动转换为字符串的类型,你直接将列表(sequence)类型的map.get(key)放入${}中输出,触发了类型不匹配异常。
正确遍历代码
<#list map?keys as key> <#-- 先为values赋值,获取当前key对应的列表 --> <#assign values = map.get(key)> <#-- 若需要打印列表调试,使用?json_string将列表转成JSON字符串输出,2.3.20版本原生支持 --> ${key} 对应列表内容:${values?json_string} <#list values as item> <div>${item.a}</div> </#list> </#list>
简化写法(无需单独处理key时推荐)
<#list map?entrySet() as entry> <#list entry.value as item> <div>${item.a}</div> </#list> </#list>
注意事项
- 所有放入
${}中的内容必须是字符串、数字、日期、布尔值这类可自动转字符串的类型,集合类型需要先调用转换方法再输出 - FreeMarker中变量必须先赋值再使用,不能直接拿表达式的别名用,必须显式用
<#assign>声明赋值
内容的提问来源于stack exchange,提问作者Dhana 6
相关产品推荐
相关产品推荐

