宏是在模板中使用 macro指令定义。
宏是和某个变量关联的模板片断,以便在模板中通过用户定义指令使用该变量。
举个例子来说明宏是如何使用的:
<#macro greet>
<font size="+2">Hello Joe!</font>
</#macro>
作为用户定义指令使用宏变量时,使用@替代FTL标记中的#
<@greet></@greet>
输出结果是:<font size="+2">Hello Joe!</font>
带参数的宏变量:在macro指令中可以在宏变量之后定义参数
<#macro greet person>
<font size="+2">Hello ${person}!</font>
</#macro>
可以这样使用这个宏变量:
<@greet person="Fred"/> and <@greet person="Batman"/>
输出结果是:
<font size="+2">Hello Fred!</font> and <font size="+2">Hello Batman!</font>
宏可以有多参数,下面是一个例子:
<#macro greet person color>
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
可以这样使用该宏变量:
<@greet person="Fred" color="black"/> 其中参数的次序是无关的
可以在定义参数时指定缺省值,如:
<#macro greet person color="black">
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
嵌套内容:
用户定义指令之间有嵌套内容时,可以使用<#nested>指令执行指令开始和结束标记之间的模板片断。
<#macro border>
<table border=4 cellspacing=0 cellpadding=4><tr><td>
<#nested>
</tr></td>
</table>
</#macro>
这样使用该宏变量:
<@border>The bordered text</@border>
输出结果:
<table border=4 cellspacing=0 cellpadding=4><tr><td>
The bordered text
</tr></td>
</table>