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?interpretmessage_in_green 解释为一个模板,returns 一个执行该模板的指令,然后您使用 <@... /> 调用一个指令。由于它是一个模板,它还可以包含 #if#list