Java 如何从Freemarker模板内部获取特定贴图值
我需要将一个Java 如何从Freemarker模板内部获取特定贴图值,java,freemarker,Java,Freemarker,我需要将一个Map传递到一个Freemarker模板中,然后在模板内部,选择从注入的Map中提取的值。比如: // This map will have a 'fizz' key with a String value of 'buzz'. Map<String,String> mymap = getSomehow(); Configuration cfg = new Configuration(); Template template = cfg.getTemplate("myt
Map
传递到一个Freemarker模板中,然后在模板内部,选择从注入的Map中提取的值。比如:
// This map will have a 'fizz' key with a String value of 'buzz'.
Map<String,String> mymap = getSomehow();
Configuration cfg = new Configuration();
Template template = cfg.getTemplate("mytempl.ftl");
StringWriter sw = new StringWriter();
template.process(mymap, sw);
但当我运行这个时,我得到:
FreeMarker template error: The following has evaluated to null or missing: ==> mymap
你知道我哪里出错了吗?过程的第一个参数是模板的“上下文”。因此,要从映射中选择特定的值,您只需使用
${fizz}
是否是getmovey()
绝对非空的结果?谢谢@AndyTurner(+1)-是的,映射绝对非空(通过日志语句确认)。谢谢@Martin Schneider(+1)-如果我需要同时注入映射,比如说,是否将FooBar
实例添加到我的模板中?如何将地图和FooBar
组合到同一个“上下文”中,然后从地图内部访问特定键?再次感谢!只需使用另一个Map或专用对象作为上下文,例如Map context=newhashmap();context.put('mymap',mymap);context.put('FooBar',FooBar)代码>。然后在模板中,你可以像${mymap[fizz]}
和${FooBar.someProperty}
那样访问它们。如果你有mymap
,那么它实际上是mymap.fizz
(或者mymap[“fizz”]
)。
FreeMarker template error: The following has evaluated to null or missing: ==> mymap