FreeMarker 笔记:
1、 注释:
<#-- 注释内容 -#>
2、<#if condition>
content1
<#else>
content2
<#if>
条件可以表示:a==b , a!=b,a>b,a<b ,a<=b,||,&&,!等
eg:
<#if user.name=="rhythmk">
A good boy!
<#if>
3、list 指令
<#list dataItems as d >
${d.item1} ,${d.item2}
<#list>
4、include 指令:
<#include "file路径" >
eg:
导入HTML页脚
<#include "/_foot.html">
5、空值处理
5.1、${obj!"ReplaceString"}
如果obj存在值则显示obj 不存在则用"ReplaceString"替换
5.2、 <#if obj??> content <#if>
如果obj为空 则隐藏整个语句块输出内容。
6、${} 输出
${user} <#-- 用user作字符串 -->
${user.age} <#-- 用user座位哈希表 -->
${user.age/10+2} <#-- 可以在${}进行计算-->
eg:
user.name="abcd"
${user.name[1]} 输出结果为"b"
7、转义符输出,在前面加 r
eg:
${r"${rhythmk}"}
输出
${rhythmk}
如果:${"name,${name}"}
name="rhythmk"
输出:
name,rhythmk
8、序列输出
<#list ["a","b","c"] as x>
${x}
<#list>
9、调用自定义方法
${doSomething(str)}
10、 输出HTML编码内容。 escape 与 noescape 指令
<#escape x as x?html>
编码HTML内容
<#noescape>无需编码HTML内容 http://www.cnblogs.com/rhythmK</#noescape>
<#escape>
11、宏的定义
11.1、普通宏定义:
<#macro greet> <font size="12">hello rhythmk!</font> </#macro>
调用宏:
<@greet></@greet>
11.2 、带参数的宏
<#macro greet name> The name is ${name}</#macro>
调用:
<@greet name="rhythmk" />
11.3、将内容嵌套的宏定义,用 “<#nested>”表示替换的内容。
<#macro span>
<span>
<#nested>
</span>
<#macro>
12 、assign 变量创建
<#assign x=10>
${x}
<#assign x=x+10>
${x}
输出:
10 20
13、生命周期:
定义/lib/mytest.ftl 文件内容如下(可包含宏以及定义):
<#assign Age=10>
调用页面:
先引入:
<#import "/lib/mytest.ftl" as r>
${r.Age}
输出:
10
http://www.cnblogs.com/rhythmK
备注:freemarker 指令是区分大小写的