1. 程式人生 > >freemarker基本指令用法

freemarker基本指令用法

freemarker基本指令用法

1、if指令

//第一種用法
[#if 條件]
...
[/#if]
//第二種用法
 [#if 條件]
 ...
 [#else]
 ...
[/#if]
 //第三種用法
  [#if 條件]
  ...
 [#elseif 條件]
 ...
 [#else]
 ...
[/#if]

2、list指令

//第一種用法
[#list animals as animal] 
  ...
[/#list]

//第二種用法
[#list animals] 
 //如果集合為空則不進list
 ...
  [#items as animal] 
  //迴圈體
  ...
[/#items] [/#list] //第三種用法 [#list animals as animal] $ {animal} [#sep]//表示還有下一個實體時,執行顯示,號[/#sep] [/#list] //第四種用法 [#list animals as animal] ${animal} [#sep],[/#sep] [#else]//如果list元素為空則執行else None [/#list] //第五種用法 [#list animals ] ... [#items as animal] ${animal}[#sep]
...[/#sep] [/#items] [#else] ... [/#list]

3、include指令
使用該include指令,您可以將另一個檔案的內容插入到模板中。

 [#include "/copyright_footer.html"]

4、使用內建外掛
FreeMarker使用?啟動呼叫內建外掛

  ${user?upper_case} //字串大寫
  ${user?cap_first} //首字母大寫
  ${user?length} //字串長度
  ${animal.protected?string("Y", "N")} //返回字串“Y”或“N”,具體取決於布林值animal.protected
${user?starts_with("J")} //第一個字母是否是J ${1.1?int} //取整 //list 相關用法 ${animals?size} //list大小 ${fruits?join(", ")} //通過連線專案,並在每個專案之間插入引數分隔符(如“orange,banana”)將列表轉換為字串 [#list animals as animal] ${animal?index} //索引0開始 ${animal?counter} //索引1開始 ${animal?item_parity} //根據當前的計數器奇偶校驗,給出字串“奇數”或“偶數”。這通常用於著色具有交替顏色的行 [/#list]

內建外掛是可以連線一起使用,例如:
${fruits?join(", ")?upper_case}
${1.1?int} //取整
5、處理缺失的變數
所謂缺失值的意思是:在FreeMarker的模型中不存在的變數,處理方式有兩種:

  • 設定預設值,關鍵符 !
${user! "visitor" }  //如果user變數不存在則值就是visitor,否則就是${user}

備註:如果給一個物件的某個屬性設定預設值應該 ${(user.name)!""},如果不加括號,那麼如果user也是缺失值,那麼FreeMarker會報錯。

  • 使用if判斷是否是缺失變數,關鍵符號兩個文號 ??
[#if user??]
   //user變數存在
[/#if]

6、“. .”操作符
“…”用來表示一個範圍,通常用於擷取字串和序列

start..end                       包含開始和結束。例:0..5  相當於[0,5]
start..<end 和  start..!end      包含開始但不包含結束。例: 0..<5  相當於[0,)
start..*length                   長度限制範圍。例: 1..*5  相當於 1 2 3 4 5
start..                          右無界範圍。這就像長度有限的範圍,長度無限。例如,1.. 相當於 [1, 2, 3, 4, 5, 6, ... ]無限

“. .”操作符並不真正儲存它們所包含的數字,因此例如0. .1並且 0. .100000000速度相同,佔用的記憶體也相同。
該操作符可用於字串操作和序列操作。例如:

  • 字串操作
//比如name=“freemarker”
${name[0..5]}   //freema   擷取前6個字元
${name[0..<5]}  //freem    擷取前5個字元
${name[0..*5]}  //freem     擷取前5個字元
${name[5..]}    //arker       擷取第6個字元及以後的字元
  • 序列操作
[#list animals[0..5] as animal]  ${animal.name} [/#list]     //只迴圈前序列的前6個物件
[#list animals[0..<5] as animal]  ${animal.name} [/#list]    //只迴圈前序列的前5個物件
[#list animals[0..*5] as animal]  ${animal.name} [/#list]    //只迴圈前序列的前5個物件
[#list animals[5..] as animal]  ${animal.name} [/#list]      //只迴圈前序列的第6個及以後的物件
[#list animals[10..5] as animal]  ${animal.name} [/#list]    //迴圈下標為10到5的倒序,這種方法可以讓序列倒序
[#list 0..10 as num]  ${num} [/#list]                        //0~10的迴圈

7、r轉義
如果你想直接在頁面上顯示“${name}”字串就得使用r進行轉義。例如

${r"${name}"}  //直接輸出${name}

8、assign關鍵字
assign用於自定義變數
例如:

  • 定義一個字串變數
[#assign name="freemarker"]                  //定義一個字串
[#assign name="Hello ${user} !"]             
[#assign name="free" + “marker”]             //兩個字串拼接
  • 定義一個序列
<#assign seq1 = ["abc""bcd""cde"]>         //定義一個序列
<#assign seq2 =  seq1 + ["efg"]>              //兩個序列拼接
<#assign seq3 =  ["a"["b","c"]"d"]>           //可以序列中可以包含任意型別
  • 定義一個Hash
<#assign ages = {"Joe"23"Fred"”:25}>
<#assign ages = {"Joe"23"Fred"25} + {"Joe"30"Fred"18}>
  • 定義一個number變數
<#assign num = 25>
<#assign num = 25 + 10 * 12>    //可以進行各種算數運算