处理循环并从 java 地图中提取数据
Processing loop and extracting data from java map
我有一个模板文件,我试图通过使用 'loop' 命令生成 table 行来制作 "dynamic"。
我还传递了一个 HashMap 来将数据填充到 table,但我无法使其工作。
这是模板:
<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);
当 运行 时 'process' 它创建 table 并放置一个
${40_10_Off}
但它没有从 java 映射中选择密钥...
如何从我在 JAVA 代码中传递的 Map 中提取我创建的变量的值?
您首先需要知道要替换的值(例如:“40_10_Off”,或介于 {} 之间的任何值),我们将其命名为 "ToBeReplacedToken",然后使用:
替换它
String.replace("ToBeReplacedToken",tokens.get("ToBeReplacedToken"));
使用 ${templateToken}
时,您只需告诉 FreeMarker 打印 templateToken
的值,它就会这样做。如果您将 tokens
放入具有某个名称的数据模型中,假设 "tookens":
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]}
我有一个模板文件,我试图通过使用 'loop' 命令生成 table 行来制作 "dynamic"。
我还传递了一个 HashMap 来将数据填充到 table,但我无法使其工作。
这是模板:
<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);
当 运行 时 'process' 它创建 table 并放置一个
${40_10_Off}
但它没有从 java 映射中选择密钥...
如何从我在 JAVA 代码中传递的 Map 中提取我创建的变量的值?
您首先需要知道要替换的值(例如:“40_10_Off”,或介于 {} 之间的任何值),我们将其命名为 "ToBeReplacedToken",然后使用:
替换它String.replace("ToBeReplacedToken",tokens.get("ToBeReplacedToken"));
使用 ${templateToken}
时,您只需告诉 FreeMarker 打印 templateToken
的值,它就会这样做。如果您将 tokens
放入具有某个名称的数据模型中,假设 "tookens":
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]}