gpt4 book ai didi

java - 通过 Freemarker 中的枚举键访问 map 元素

转载 作者:行者123 更新时间:2023-11-30 11:57:58 25 4
gpt4 key购买 nike

我正在尝试访问 HashMap 中的元素。此 HashMap 的键由 Enum 定义。

阅读文档后,我发现为了能够访问 Enum,我必须像这样将它发送到 Freemarker:

BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
TemplateHashModel enumModels = wrapper.getEnumModels();
TemplateHashModel fieldTypeModel = (TemplateHashModel)enumModels.get("com.example.MinisiteFieldType");
root.put("fieldtypes", fieldTypeModel);

在我的 .ftl 中,我尝试了以下操作:

${myelement.mymap[fieldtypes.SEOTEXT]}

但是我得到:表达式 myelement.mymap[fieldtypes.SEOTEXT] 在 X 行未定义...

我想确保我正确地映射了枚举,所以我尝试了:

${fieldtypes.SEOTEXT}

这没有打印任何东西,让我想知道它是通过了,还是根本无法打印。

在 Java 调试中,就在我的根 Map 中插入 TemplateHashModel 之前,'fieldTypeModel' 填充了正确的数据...

如有任何帮助,我们将不胜感激!

巴特

最佳答案

我怀疑您的问题是,通过使用 [] 语法访问您的 map ,您是在隐式地告诉 Freemarker 将其视为散列。这可能不会像您预期的那样工作——散列可能代表 Map 对象,将“size”和“containsKey”等映射到 Java 方法。相反,请尝试:

${myelement.mymap.get(fieldtypes.SEOTEXT)}


作为旁注,我从未尝试过通过您描述的方法访问枚举,但是还有另一种方法可以从不需要 Java 代码的模板访问 Java 常量,因此以下方法也应该有效:

${myelement.mymap.get(stack.findValue("@com.example.MinisiteFieldType@SEOTEXT"))}

关于java - 通过 Freemarker 中的枚举键访问 map 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440096/

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