1、<#assign mouse = "Jerry"> // 声明变量 mouse ="Jerry"
2、<#if mouse??> // 判断mouse 是否存在
Mouse found
<#else>
No mouse found
</#if>
3、${"green " + "mouse"?upper_case} ---> <#-- green MOUSE -->
${("green " + "mouse")?upper_case} ---> <#-- GREEN MOUSE -->
4、创建一个宏变量
<#macro greet>
<font size="+2">Hello Joe!</font>
</#macro>
macro指令自身不打印任何内容,它只是用来创建宏变量,所以就会有一个名为greet的变量。在<#macro greet>和</#macro>之间的内容(称为宏定义体)当使用它作为指令时将会被执行。你可以在FTL标记中通过@代替#来使用自定义指令。使用变量名作为指令名。而且,自定义指令的结束标记也是需要的。那么,就可以这样来使用greet了:
无参数:<@greet></@greet> ----->打印 <font size="+2">Hello Joe!</font>;
有参数:<#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"/> 或者<@greet color="black" person="Fred"/>
参数的顺序不重要 。 宏参数的另外一个重要的方面是它们是 局部变量
5、很多情况下需要给一个参数指定一个相同的值,所以我们仅仅想在这个值发生变化后重新赋给变量。那么要达到这个目的,在macro指令中必须这么来指定变量:param_name=usual_value。例如,当没有特定值的时候,我们想要给color赋值为"black",那么greet指令就要这么来写:
<#macro greet person color="black">
<font size="+2" color="${color}">Hello ${person}!</font>
</#macro>
现在,我们这么使用宏就可以了:<@greet person="Fred"/>,因为它和<@greet person="Fred" color="black"/>是相同的,这样参数color的值就是已知的了。如果想给color设置为”red”,那么就写成:
<@greet person="Fred" color="red"/>,这时macro指令就会使用这个值来覆盖之前设置的通用值,参数color的值就会是”red”了。
6、 根据FTL表达式规则,明白这一点是至关重要的,someParam=foo和someParam="${foo}"是不同的。第一种情况,是把变量foo的值作为参数的值来使用。第二种情况则是使用插值形式的字符串,那么参数值就是字符串了,这个时候,foo的值呈现为文本,而不管foo是什么类型(数字,日期等)的。看这个例子:someParam=3/4和someParam="${3/4}"是不同的,如果指令需要someParam是一个数字值,那么就不要用第二种方式。切记不要改变这些。
7、嵌套内容
<#macro do_thrice>
<#nested>
<#nested>
<#nested>
</#macro>
<@do_thrice>
Anything.
</@do_thrice>
打印结果:
Anything.
Anything.
Anything.
在嵌套内容中,宏的局部变量是不可见的