Freemarker 中的嵌套插值
Nested interpolation in Freemarker
我有一个 messages.properties 文件,其中包含一些用于替换模板内变量的文本。假设我的模板具有以下内容:
<tr>
<td class="green">${message_in_green}</td>
</tr>
我的 message.properties 然后有:
message_in_green=Click <a href="${back_link}">here</a> to go back.
在我的 Java 代码中,我创建了一个存储 back_link
的地图(除其他外......我可以使用插值直接在模板中引用):
data.put("back_link", "http://blah.com");
最后的结果是back_link
没有被http://blah.com
代替,这也是我有些预料的。我可以像上面那样在 Freemarker 中进行嵌套插值吗(其中模板引用属性文件中的文本字符串,而文本字符串引用 Java 代码中设置的内容)?如果是这样,替换 back_link
的正确方法是什么?
像这样:
<td class="green"><@message_in_green?interpret /></td>
其中 message_in_green?interpret
将 message_in_green
解释为一个模板,returns 一个执行该模板的指令,然后您使用 <@... />
调用一个指令。由于它是一个模板,它还可以包含 #if
、#list
等
我有一个 messages.properties 文件,其中包含一些用于替换模板内变量的文本。假设我的模板具有以下内容:
<tr>
<td class="green">${message_in_green}</td>
</tr>
我的 message.properties 然后有:
message_in_green=Click <a href="${back_link}">here</a> to go back.
在我的 Java 代码中,我创建了一个存储 back_link
的地图(除其他外......我可以使用插值直接在模板中引用):
data.put("back_link", "http://blah.com");
最后的结果是back_link
没有被http://blah.com
代替,这也是我有些预料的。我可以像上面那样在 Freemarker 中进行嵌套插值吗(其中模板引用属性文件中的文本字符串,而文本字符串引用 Java 代码中设置的内容)?如果是这样,替换 back_link
的正确方法是什么?
像这样:
<td class="green"><@message_in_green?interpret /></td>
其中 message_in_green?interpret
将 message_in_green
解释为一个模板,returns 一个执行该模板的指令,然后您使用 <@... />
调用一个指令。由于它是一个模板,它还可以包含 #if
、#list
等