You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 03:45:05