Freemarker - 创建多个子标签
Freemarker - creating multiple child tags
给定一个结构如下的 ftl 文件(仅作为示例),我能够将所有元素替换/插入到级别 1 中,这很好。
当可能有多个级别 2 时,我会感到困惑 - 例如它可能会重复多次。因此,我的更换过程会遇到一个痛点
<parent>
<level1>
<a>${a}</a>
<b>${b}</b>
<c>${c}</c>
<d>${d}</d>
</level1>
<level2>
<e><${e}</e>
<f><${f}</f>
<g><${g}</g>
<h><${h}</h>
<i><${i}</i>
<j><${j}</j>
</level2>
</parent>
map.put("a", "valuefora");
map.put("b", "valueforb");
map.put("c", "valueforc");
map.put("d", "valueford");
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("C:\templates"));
Template temp = cfg.getTemplate("freemarker.ftl");
Writer out = new OutputStreamWriter(System.out);
temp.process(map, out);
此时 - 假设我有一个包含多个 level2 节点的值列表 - 我将如何使用上面显示的样式来生成它?
谢谢
我不确定我是否真的理解你的问题,但我认为你只会使用 freemarker list
-command。您可以将地图或列表放在您的上下文中。 list
-命令记录在案here
<#list your.object.or.map as listElem>
<level2>
<e>${listElem.e}</e>
<f>${listElem.f}</f>
</level2>
</#list>
您的上下文对象,只需要一个相应的地图或对象。
quickstart guide(参见列表指令)还包含一个使用列表指令的示例。
给定一个结构如下的 ftl 文件(仅作为示例),我能够将所有元素替换/插入到级别 1 中,这很好。
当可能有多个级别 2 时,我会感到困惑 - 例如它可能会重复多次。因此,我的更换过程会遇到一个痛点
<parent>
<level1>
<a>${a}</a>
<b>${b}</b>
<c>${c}</c>
<d>${d}</d>
</level1>
<level2>
<e><${e}</e>
<f><${f}</f>
<g><${g}</g>
<h><${h}</h>
<i><${i}</i>
<j><${j}</j>
</level2>
</parent>
map.put("a", "valuefora");
map.put("b", "valueforb");
map.put("c", "valueforc");
map.put("d", "valueford");
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("C:\templates"));
Template temp = cfg.getTemplate("freemarker.ftl");
Writer out = new OutputStreamWriter(System.out);
temp.process(map, out);
此时 - 假设我有一个包含多个 level2 节点的值列表 - 我将如何使用上面显示的样式来生成它?
谢谢
我不确定我是否真的理解你的问题,但我认为你只会使用 freemarker list
-command。您可以将地图或列表放在您的上下文中。 list
-命令记录在案here
<#list your.object.or.map as listElem>
<level2>
<e>${listElem.e}</e>
<f>${listElem.f}</f>
</level2>
</#list>
您的上下文对象,只需要一个相应的地图或对象。
quickstart guide(参见列表指令)还包含一个使用列表指令的示例。