【问题标题】:Nested interpolation in FreemarkerFreemarker中的嵌套插值
【发布时间】:2018-02-01 18:19:19
【问题描述】:

我有一个 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 的 Map(除此之外...我可以使用插值直接在模板中引用它):

data.put("back_link", "http://blah.com");

最终的结果是back_link 没有被http://blah.com 取代,这是我有点预料到的。我可以像上面那样在 Freemarker 中进行嵌套插值吗(其中模板引用属性文件中的文本字符串,而文本字符串引用在 Java 代码中设置的内容)?如果是这样,替换back_link的正确方法是什么?

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    像这样:

    <td class="green"><@message_in_green?interpret /></td>
    

    其中message_in_green?interpretmessage_in_green 解释为模板,并返回一个执行该模板的指令,然后您使用&lt;@... /&gt; 调用指令。由于它是一个模板,它还可以包含#if#list等。

    【讨论】:

    • 当然!我尝试过的其中一件事是指令,但我将它放在属性文件中。再想一想,这完全有道理。谢谢。
    猜你喜欢
    • 2020-01-11
    • 2013-12-03
    • 2011-12-27
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2016-10-14
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多