暂停FTL中模板字符串的插值

时间:2017-09-11 08:02:04

标签: macros freemarker

我想将动态字符串传递给FTL宏。但是当我从FTL调用宏时,我不希望插入模板字符串。我希望模板字符串只在Macro内插。这样我就可以通过发送动态模板字符串作为参数来使宏可重用。由于我是Apache FTL的新手,所以我不知道如何继续。

1 个答案:

答案 0 :(得分:0)

不确定你想要达到什么目标,但我猜是这样的:

<#macro m s>
  <#local parsedS = s?interpret>
  <#list ['John Doe', 'Jane Doe'] as name>
    <p><@parsedS />
  </#list>
</#macro>

<@m r"Hello ${name}!" />

将打印:

<p>Hello John Doe!
<p>Hello Jane Doe!

一些注意事项:

  • 我没有将参数用作带插值的字符串, 但作为模板片段(如果你使用它,那么自动转义, 将被应用,您也可以使用#if等值 s)。
  • 因为模板片段在我的评估中有多种类型 例如,我已将?interpret的结果分配给本地 变量,否则你只能写<@s?interpret />
  • 截至 字符串文字前面的r告诉FreeMarker ${} (和\转义)不得解释。