我有模板文件,我尝试制作"动态"通过使用'循环'命令生成表行。
我还传递了一个HashMap来将数据填充到表中,但是我无法使其工作。
这是模板:
<html>
<p>
<#list ['10', '20'] as sampleRate>
<table>
<#list ['40'] as inputRange>
<#list ['Off'] as dcFrequency>
<#assign templateToken = inputRange + "_" + sampleRate + "_" + dcFrequency>
<tr valign=top>
<td>${templateToken}</td>
</tr>
</#list>
</#list>
</table>
</#list>
</p>
<p><i>${.now?date}</i></p>
</body>
</html>
这是java代码:
tokens.put("40_10_Off", "WORKS!");
template.process(tokens, writer);
运行&#39;流程&#39;它创建了表并放了一个
${40_10_Off}
但它没有从java地图中选择密钥......
如何从我在JAVA代码中传递的Map中提取我创建的变量的值?
答案 0 :(得分:1)
使用${templateToken}
,您只需告诉FreeMarker打印templateToken
的值即可。如果您将tokens
放入具有某个名称的数据模型中,那么请说“takeens”:
tokens.put("40_10_Off", "WORKS!");
Map<String, Object> dataModel = new HashMap<>();
dataModel.put("tokens", tokens);
template.process(dataModel, writer);
然后您可以在模板中编写${tokens[templateToken]}
。如果您更喜欢使用tokens
作为数据模型本身(如原始示例中所示),那么您可以编写:
${.vars[templateToken]}
答案 1 :(得分:-1)
首先需要知道要替换的值(例如:“40_10_Off”,或 {} 之间的任何内容),让我们将其命名为“ToBeReplacedToken”,然后使用以下命令替换它:
String.replace("ToBeReplacedToken",tokens.get("ToBeReplacedToken"));