定义循环输出的宏
java
<#macro list title items>
${title?cap_first}:
<#list items as x>
*${x?cap_first}
</#list>
</#macro>
<@list items=["mouse", "elephant", "python"] title="Animals"/>
输出结果:
Animals:
*Mouse
*Elephant
*Python
包含body 的宏
java
<#macro repeat count>
<#list 1..count as x>
<#nested x, x/2, x==count>
</#list>
</#macro>
<@repeat count=4 ; c,halfc,last>
${c}. ${halfc}<#if last> Last!</#if>
</@repeat>
输出:
0.5
1
1.5
2 Last!
include关键字
语法:
java
<#include filename options>
options包含两个属性:
encoding="GBK" 编码格式;
parse=true 是否作为ftl语法解析,默认是true,false就是以文本方式引入
例子:
sql
/common/copyright.ftl 包含内容:
Copyright 2001-2002 ${me}
All rights reserved.
----------------------------------------------------
<#assign me = "Juila Smith">
Some test
Yeah
<#include "/common/copyright.ftl" encoding="GBK">
Import关键字
语法:
sql
<#import path as hash>
类似于java里的import,它导入文件,然后就可以在当前文件里使用被导入文件里的宏组件
用例
假设mylib.ftl 里定义了宏copyright 那么我们在其他模板页面里可以这样使用
<#import "/libs/mylib.ftl" as my>
<@my.copyright date="1999-2002"/>
<#-- "my"在freemarker里被称作namespace -->
compress关键字
语法:
java
<#compress>
...
</#compress>
用来压缩空白空间和空白的行