gpt4 book ai didi

Freemarker - 将值添加到哈希

转载 作者:行者123 更新时间:2023-12-04 06:30:11 27 4
gpt4 key购买 nike

我正在尝试在我的 Freemarker 模板中向 HashMap 添加值。我还使用了 BeanWrapper,以便我可以查看 Java 对象中公开的方法。

在我的数据模型中,我有一个 HashMap:

root.put("myName", new HashMap());

正如我上面提到的,我使用 BeanWrapper 以便我可以使用我的 Java 对象的所有方法:
BeansWrapper wrapper = new BeansWrapper();
wrapper.setExposureLevel(0);
cfg.setObjectWrapper(wrapper);//cfg = new Configuration();

现在在我的模板文件(test.ftl)中,我试图调用 HashMap 的 put 方法(我已经存储在数据模型中..above):
${myName.put["fname:John"]}

最后一行不起作用,我收到一个错误:
freemarker.template.TemplateException: Expected hash. myName.put evaluated instead to freemarker.ext.beans.SimpleMethodModel on line 16, column 11 in test.ftl.

你能告诉我,我如何调用 put我的 HashMap 在模板文件中的方法?

最佳答案

我建议你阅读 Object Wrappers .

我也喜欢this question来自常见问题解答,我现在将引用,

"Maybe you should push some calculations back to the data-model building phase. Ideally the data-model contains what should be displayed, and not something that serves as the base of further calculations." - http://freemarker.sourceforge.net/docs/app_faq.html#faq_question_14



如果你需要数据模型中的变量,不要费心把它放在 map 中,使用 assign directive .

唉,我明白这个世界并不完美,有时我们必须尽力而为。

如果你必须,我建议建立一个对象来包装你的 map ,即
class MapWrapper
{
Map map = new HashMap;
...
public void put(Object arg)
{
map.put(arg);
}
}

然后只需将您的 map 包装器放入您的模型中,您就应该能够像调用任何其他方法一样调用 put。

关于Freemarker - 将值添加到哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5521521/

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