FreeMarker單獨使用的幾率比較小,但是它的文法的确簡單,用起來比較友善,這次整理了點這方面的資料拿出來分享
1.普通的變量
這是最簡單的情況,直接${變量名稱} ,如${name}
需要注意的是有的變量是需要轉義的如雙引号
2.周遊List集合
這個是用的最多的,必須掌握
此外,疊代集合對象時,還包含兩個特殊的循環變量:
item_index:目前變量的索引值
item_has_next:是否存在下一個對象
也可以使用<#break>指令跳出疊代
這裡會逐個輸出演員的名稱
3.周遊單獨的map集合
這個不是很好記,但是用的幾率也不小
4.算術運算符
FreeMarker表達式中完全支援算術運算,FreeMarker支援的算術運算符包括:+, - , * , / , %
5.比較運算符
表達式中支援的比較運算符有如下幾個:
1,=或者==:判斷兩個值是否相等.
2,!=:判斷兩個值是否不等.
3,>或者gt:判斷左邊值是否大于右邊值
4,>=或者gte:判斷左邊值是否大于等于右邊值
5,<或者lt:判斷左邊值是否小于右邊值
6,<=或者lte:判斷左邊值是否小于等于右邊值
注意:=和!=可以用于字元串,數值和日期來比較是否相等,但=和!=兩邊必須是相同類型的值,否則會産生錯誤,而且FreeMarker是精确比較,"x","x ","X"是不等的.其它的運作符可以作用于數字和日期,但不能作用于字元串,大部分的時候,使用gt等字母運算符代替>會有更好的效果,因為FreeMarker會把>解釋成FTL标簽的結束字元,當然,也可以使用括号來避免這種情況,如:<#if (x>y)>
6.邏輯運算符
和普通程式一樣,freemarker也有&&,|| ,!三種
7.if的使用
這是一個典型的分支控制指令,該指令的作用完全類似于Java語言中的if,if指令的文法格式如下:
8 include指令
include指令的作用類似于JSP的包含指令,用于包含指定頁.include指令的文法格式如下:
<#include filename [options]>
在上面的文法格式中,兩個參數的解釋如下:
filename:該參數指定被包含的模闆檔案
options:該參數可以省略,指定包含時的選項,包含encoding和parse兩個選項,其中encoding指定包含頁面時所用的解碼集,而parse指定被包含檔案是否作為FTL檔案來解析,如果省略了parse選項值,則該選項預設是true.
9 import指令
該指令用于導入FreeMarker模闆中的所有變量,并将該變量放置在指定的Map對象中,import指令的文法格式如下:
<#import "/lib/common.ftl" as com>
上面的代碼将導入/lib/common.ftl模闆檔案中的所有變量,交将這些變量放置在一個名為com的Map對象中.
10.變量的聲明
<#assign num=0/>
11 macro的使用
這個可以用來實作自定義指令,一般用來做公共元件,例如分頁條
最後說下list中含有map的周遊,這種情況可以使用點文法或方括号文法.假如有下面的資料模型:
Map root = new HashMap();
Book book = new Book();
Author author = new Author();
author.setName("annlee");
author.setAddress("gz");
book.setName("struts2");
book.setAuthor(author);
root.put("info","struts");
root.put("book", book);
為了通路資料模型中名為struts2的書的作者的名字,可以使用如下文法:
book.author.name //全部使用點文法
book["author"].name
book.author["name"] //混合使用點文法和方括号文法
book["author"]["name"] //全部使用方括号文法
另外freemarker也注意空值的處理,具體的可以參考這篇