0

假设我有一个 freemarker 宏:

<#macro helloObject>
  World
</#macro>

在某些情况下,我可以很容易地调用它:

Hello, <@helloObject/>!

但是插入它的语法是什么,例如,如果它是字符串的一部分?

<#assign greeting="Hello, <@helloObject>!"     /> <#-- doesn't work -->
<#assign greeting="Hello, ${helloObject}!"     /> <#-- doesn't work -->
<#assign greeting="Hello, ${@helloObject}!"    /> <#-- doesn't work -->
<#assign greeting="Hello, ${<@helloObject/>}!" /> <#-- doesn't work -->
<#assign greeting="Hello, @helloObject!"       /> <#-- doesn't work -->
${greeting}
4

2 回答 2

6

是的你可以。

<#macro helloObject>
  世界
</#宏>

<#assign x><@helloObject/></#assign>

你好 ${x}。

将打印:

你好世界。
于 2014-11-17T08:06:25.417 回答
5

您正在寻找一个功能

<#function helloObject>
  <#return "World">
</#function>

${helloObject()} <#-- Will print out World -->    

<#assign greetings = "Hello, " + helloObject() />

${greetings} <#-- Will print out Hello, World --> 

无法分配宏的结果,因为它是模板片段。

于 2013-06-27T08:59:29.217 回答