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

Freemarker嵌套变量赋值问题:动态获取嵌套变量值失败求助

解决Freemarker中动态获取嵌套变量的问题

这问题我之前也碰到过,Freemarker确实不允许在表达式内部嵌套${}标记——毕竟${}本身就是用来输出表达式结果的,内部直接写变量或表达式就行。针对你的场景,分两种常见情况给出解决方案:

情况1:regions是哈希(Map)对象,region的值是它的键

如果你的数据结构是类似这样的JSON:

{
  "region": "sys",
  "regions": {
    "sys": {
      "username": "abc"
    }
  }
}

那正确写法是直接在方括号里用region变量(不用加${}),接着访问username属性:

${regions[region].username}

Freemarker会先算出region的值是"sys",再从regions哈希里取出对应的对象,最后拿到它的username属性值。

情况2:变量名本身就是regions[sys]_username格式

如果你的变量是直接以regions[sys]_username作为名称(而非嵌套的哈希结构),那得用Freemarker内置的.vars变量来动态构造变量名并取值:

${.vars["regions[" + region + "]_username"]}

.vars是当前模板上下文的变量映射表,你可以通过字符串拼接生成目标变量名,再用这个字符串键从.vars里取出对应的值。

你原来写的${regions[${region}]_username}之所以报错,就是因为把${}放进了另一个表达式内部,方括号里只需要写合法的Freemarker表达式就可以啦。

内容的提问来源于stack exchange,提问作者Thejaswini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:28:42