freemarker 基本指令

okone96發表於2007-05-08
一:if指令:
condition>...
condition2>...
condition3>...
...
...
#if>

二:switch
value>
refValue1
>...
refValue2
>......
refValueN>...
...
#switch>

三:list,break
sequence as item>
...
#list>
兩個特殊的迴圈變數:
item_index: 當前變數的索引值。
item_has_next: 是否存在下一個物件。

可以用指令離開loop迴圈。

四:include指令
filename>
或者
filenameoptions>

filename
: 表示式轉換為字串
options: encoding=encoding, parse=parse encoding: 表示式轉換為字串
parse: 表示式轉換為邏輯值,是否作為ftl檔案解析。


表示當前目錄下以及所有父目錄下的檔案。如果當前模版在/foo/bar/template.ftl ,那麼查詢footer.ftl的順序為:
/foo/bar/footer.ftl
/foo/footer.ftl
/footer.ftl這種方式講允許設計者將通用的模版放在父資料夾裡面。
也可以只指定部分路徑:


五:import指令
path as hash>
六:noparse

...
#noparse>

七:compress

...
#compress>
八:escape,noescape
identifier as expression>
...
...#noescape>
...
#escape>

escape指令body區的ftl的interpolations都會被自動加上escape表示式。但是不會影響字串內的interpolations。而且也只會影響到body內出現的interpolations,比如不會影響到include的ftl的interpolations。


First name: ${firstName}
Last name: ${lastName}
Maiden name: ${maidenName}
#escape>
等同於:

First name: ${firstName?html}
Last name: ${lastName?html}
Maiden name: ${maidenName?html}

escape指令在解析模版時起作用,而不是執行時起作用。

escape指令還能巢狀使用,子繼承父的escape規則。


Customer Name: ${customerName}
Items to ship:

${itemCode1}
${itemCode2}
${itemCode3}
${itemCode4}
#escape>
#escape>
等同於:
Customer Name: ${customerName?html}
Items to ship:
${itemCodeToNameMap[itemCode1]?html}
${itemCodeToNameMap[itemCode2]?html}
${itemCodeToNameMap[itemCode3]?html}
${itemCodeToNameMap[itemCode4]?html}

九:assign指令
name=value>
or
name1=value1name2=value2... nameN=valueN>
or
same as above... in namespacehash>
or
name>
  capture this
#assign>
or
name in namespacehash>
  capture this
#assign>
建立或者替換一個已經存在的變數,只能作用於頂層變數。 不好的做法:Hello ${user}!#assign>
更改為:


十:global指令
name=value>
or
name1=value1name2=value2... nameN=valueN>or
name>
capture this
#global>

十一:local指令
name=value>
or
name1=value1name2=value2... nameN=valueN>or
name>
capture this
#local>
只能用於macro的定義body中。


十二:setting指令:

name=value>
name的取值範圍:
local:
number_format:
boolean_format
:預設值為
"true,false"
date_format, time_format,
datetime_format
time_zone:
url_escaping_charset
classic_compatible

十三:使用者自定義指令
macro_or_transfparam1=val1param2=val2...paramN=valN/>macro_or_transfparam1=val1param2=val2...paramN=valN ; lv1, lv2, ..., lvN/>macro_or_transf...>
  ...
@macro_or_transf>

macro_or_transf...> ... @>
macro_or_transfval1, val2, ..., valN/>
十四:macro,nested,return
nameparam1param2... paramN>
...
loopvar1, loopvar2, ..., loopvarN>
...

...
#macro>

十五:function, return
nameparam1param2... paramN>
... returnValue>
...
#function>



#function>
${avg(10, 20)}

十六:flush


十七:stop

or
reason>取消處理模版。

十八:ftl指令
param1=value1param2=value2...paramN=valueN>
ftl指令必須放在ftl檔案的最上面。

引數範圍:
encoding:
strip_whitespace
strip_text
strict_syntax

十九:t, lt, rt
二十:attempt, recover

attempt block
recover block
#attempt>

Optional content: ${thisMayFails}

Ops! The optional content is not available.
#attempt>
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750220/viewspace-913997/,如需轉載,請註明出處,否則將追究法律責任。

相關文章