gpt4 book ai didi

java - 返回 map 值的 Freemarker 函数

转载 作者:行者123 更新时间:2023-12-02 05:42:18 25 4
gpt4 key购买 nike

我有一些 Java map

    Map<SomeEnum, Boolean> someClassMap = new HashMap <SomeClass, Boolean>();
someClassMap.put(SomeEnum.EXAMPLE_A, true);
etc.

现在在ftl中我想创建将从map返回值的函数(ofc按给定键)

<#function checkAccess someEnumName>
<#list someClassMap?keys as key>
<#if someEnumName== ${key}>
<#return ${someClassMap[key]} >
</#if>
</#list>
</#function>

因此,这段代码假设检查函数中给定的参数是否等于映射中的键,然后从映射中返回该键的值。

不幸的是,我收到此错误(它指向 <#if><#return> :

Encountered "{" at line 3, column 37 in functions.ftl. Was expecting one of: ">" ... "." ... "[" ... "(" ... "?" ... "!" ... ... "??" ... "+" ... "-" ... "*" ... "/" ... "%" ... ">=" ... ... ">" ... ... ... ... ".." ... ... ...

据我所知,我无法返回这样的值,但不幸的是我不知道如何做到这一点。我也尝试过<#assign ... >但出现同样的错误

最佳答案

在您的情况下,您将 Freemarker 标记与插值混合 (${})。
Freemarker 在调用 ${x} 时尝试渲染/打印 x 的字符串值。

<小时/>

所以当你这样做时:

<#if someEnumName== ${key}>

<#return ${someClassMap[key]} >

Freemarker 将尝试打印 ${key}${someClassMap[key]}

<小时/>

在 Freemarker 标签中混合插值是不正确的语法,导致 Freemarker 提示。
只需删除 ${} 就可以了。

有关详细信息,请参阅以下内容:

  1. Freemarker template structure (Interpolation vs Freemarker tags)
  2. Interpolation (check the section with "Warning!")

关于java - 返回 map 值的 Freemarker 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24409416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com