我一直在闲逛,但无法找到任何文档或示例代码。
我有一个具有此键/值映射的ftl页面:
如何将地图作为参数传递给freemarker宏?
<#macro descriptionMacro firstLang descriptionText>
<#-- SOME CODE -->
<textarea>
<#if descriptionText[firstLang]??>
${descriptionText[firstLang]?trim}
</#if>
</textarea>
<#-- SOME OTHER CODE -->
</#macro>
<@descriptionMacro firstLang="es" descriptionText=roomType.description/>
答案 0 :(得分:3)
我在代码中看到的唯一问题是地图中的键是大写的(“EN”,“ES”,“PT”),并且您尝试使用小写来访问模板中的值关键“es”。
除此之外,我认为使用Map
作为参数没有任何限制。
例如给出这张地图:
Map<String, String> description = new HashMap<>();
description.put("en", "Some text");
description.put("es", "Testo");
description.put("fr", "Texte");
Map<String, Object> data = newHashMap();
data.put("description", description);
Template template = getTemplate();
Writer out = new StringWriter();
template.process(data, out);
这个模板:
<#macro printDescription lang data>
Description = ${data[lang]}
</#macro>
<@printDescription lang="es" data=description />
输出结果为:
Description = Testo