【问题标题】:Nested variable assignment in freemarkerfreemarker中的嵌套变量赋值
【发布时间】:2020-01-11 05:00:13
【问题描述】:

我正在使用Freemarker 模板引擎使用json 模板创建属性文件。

在这个过程中,我遇到了一个问题。我想动态获取变量值(一个表达式在另一个表达式中获取变量值)。

"region"="sys"
"regions[sys]_username" = "abc"

现在如何在Freemarker 模板中得到这个?

我正在尝试以下内容:

${regions[${region}]_username} but that is not working.

但这是抛出错误,说我们不能在另一个表达式中使用表达式。

【问题讨论】:

  • "region"="sys" , "regions[sys]_username" = "abc" ,这些在两个不同的行中。

标签: java json freemarker


【解决方案1】:

我得到了答案。 首先 "regions[sys]_username" = "abc" 必须更改为 "regions_sys_username" = "abc",因为不支持方括号。

假设 instanceJSON.value 存储了所有值。

<#assign getSys=instanceJSON.value.region.replace("\"","")>
<#assign getRegion="instanceJSON.value.regions.${getSys}_username">
regions_sys_username = ${getRegion?eval}

【讨论】:

    【解决方案2】:

    如果你有region变量,你可以连接后缀并使用vars

    <#assign regions = region + "_username">
    ${.vars[regions]}
    

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 1970-01-01
      • 2018-02-01
      • 2021-07-11
      • 2013-03-31
      • 2020-09-02
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多