freemarker學習1(ftl)
2008-07-31 13:47
<# ... > 中存放所有freemaker的內容,之外的內容全部原樣輸出。
<@ ... /> 是函式呼叫
兩個定界符內的內容中,第乙個符號表示指令或者函式名,其後的跟隨引數。freemaker提供的控制包括如下:
<#if condition><#elseif condition><#else> 條件判斷
<#list hash_or_seq as var> 遍歷hash表或者collection(freemaker稱作sequence)的成員
<#macro name param1 param2 ... ><#nested param> 巨集,無返回引數
<#function name param1 param2><#return val>函式,有返回引數
var?member_function(...) 用函式對var進行轉換,freemaker稱為build-ins。實際內部實現類似member_function(var, ...)
stringa[m .. n] 取子字串,類似substring(stringa, m, n)
直接定義乙個hash表
[item0, item1, item2 ...] 直接定義乙個序列
hash0[key0] 訪問hash表中key對應的元素
seq0[5] 訪問序列指定下標的元素
<@function1 param0 param1 ... /> 呼叫函式function1
<@macro0 param0 param1 ; nest_param0 nest_param1 ...> nest_body <
/@macro
> 呼叫巨集,並處理巨集的巢狀
<#assign var = value > 定義變數並初始化
<#local var = value> 在 macro 或者 function 中定義區域性變數並初始化
<#global var = value > 定義全域性變數並初始化
$ 輸出並替換為表示式的值
<#visit xmlnode> 呼叫macro匹配xmlnode本身及其子節點
<#recurse xmlnode> 呼叫macro匹配xmlnode的子節點
<#if
condition
>
<#list
sequencevar
as variable
>
repeatthis
products[10..19] or products[5..]
的格式。
序列也可以做加法計算:passwords +
預設值: name!"unknown"
或者 (user.name)!"unknown"
或者 name!
或者 (user.name)!
null值檢查: name??
or (user.name)??
轉義列表:
escape sequence
meaning
/"quotation mark (u0022)
/'apostrophe (a.k.a. apostrophe-quote) (u0027)
//back slash (u005c)
/nline feed (u000a)
/rcarriage return (u000d)
/thorizontal tabulation (a.k.a. tab) (u0009)
/bbackspace (u0008)
/fform feed (u000c)
/lless-than sign: <
/ggreater-than sign: >
/aampersand: &
/",或者可以用生字元(r指令):$(r "$"}
序列構成:<#list["winter", "spring", "summer", "autumn"]as x>$
不同的物件可以存放在乙個序列裡面,比如:
[2 + 2, [1, 2, 3, 4], "whatnot"]. 第乙個是數字,第二個是序列,第三個是字串。
可用採用start..end的方式來定義乙個數字序列,start可以小於end,同時,end也可以省略。
hash取值支援一下四種模式:
book.author.name,
book["author"].name
, book.author.["name"]
, book["author"]["name"]
.
特殊變數是指freemaker引擎本身定義的變數。訪問時,以.variable_name的語法訪問。
變數表示式支援巢狀模式,比如:$!"}。
變數表示式在指令中的使用情況:
變數表示式可以在指令中,用「」的方式存在,不如:<#include "/footer/$.html">.
但是不允許下面的方式存在: <#if $>wow!
, 正確寫法是:<#if isbig>wow!
. 而且 <#if "$">wow!寫法也不正確,因為"$"返回的是字串,不是boolean型別。
字串中取字元或字串採用以下語法:$,$ $,$
序列操作:
加法:<#list ["joe", "fred"] + ["julia", "kate"] as user> 但要注意串聯之後的讀取速度變慢。
子串行:seq[1..4]
序列和hash的串聯都只能用於兩個相加,不能有多個相加的模式,hash相加,如果兩個相加的hash存在相同的key,則後面會覆蓋前面的。
在使用》=或者》時,需要注意一些問題,因為freemaker會將》解釋成標記的關閉符,為了解決這個問題,需要在表示式加上括號,比如: <#if (x > y)>
. 或者使用 >
and 《符號來代替。
無值變數(包括無該變數,null,返回void,無屬性等):unsafe_expr
!default_expr or unsafe_expr!
or(unsafe_expr)!default_expr
or (unsafe_expr)!
預設值可以是任何型別,不一定是數字,比如:hits!0 或者 colors!["red", "green", "blue"]
. 如果預設值忽略,那麼將會預設為空串、空序列或者空hash,因為freemarker支援多型別的值。不過要讓預設值為0或false,則不能省略預設值。
非頂層變數的無值處理:
product.color!"red":只處理product不為空,color為空的預設值處理,如果product為空,則freemaker會拋 出異常。(product.color)!"red":則會處理product為空,color為空,或者沒有color屬性的無值情況。
無值變數的判斷操作:unsafe_expr
?? or (unsafe_expr)??
判斷變數是否是無值。
man 幫助手冊
常用的命令選項 f,whatis 相當於 whatis k,apropos 相當於 apropos w,where,path,location 列印手冊頁的物理位置 w,where cat,location cat 列印 cat 檔案的物理位置 m,manpath path 將手冊頁的搜尋路徑設定為...
linux 下幫助手冊
linux 下man幫助是非常必要的,因為每個人不可能都記住命令和引數。可以輸入 命令 help 然後會顯示幫助,而且有中文,但是有些命令不如 man 命令 全。輸入命令後出現的格式 name 簡短的命令,資料名稱的說明 synopsis 簡短的執行語法簡介 description 教為完整的說明 ...
git操作幫助手冊
用命令列建立乙個新的git倉庫 echo sd readme.md git init git add readme.md git commit m first commit git remote add origin git github.com yankunli sd.git git push u...