freemarker ftl模板語法和指令

2021-09-29 21:48:32 字數 3304 閱讀 7096

freemarker模板上主要由一下4個部分組成:

1、注釋,即,介於其之間的內容會被freemarker忽略;

2、插值(interpolation):即$部分,freemarker會用真實的值代替$;

3、ftl指令:和html標記類似,名字前加#予以區分,freemarker會解析標籤中的表示式或邏輯;

4、文字,僅文字資訊,這些不是freemarker的注釋、插值、ftl指令的內容會被freemarker忽略解析,直接輸出內容。

1. assign指令

此指令用於在頁面上定義乙個變數

(1)定義簡單型別:

聯絡人:$
(2)定義物件型別:

2. include指令

此指令用於模板檔案的巢狀

建立模板檔案head.ftl

我們修改test.ftl,在模板檔案中使用include指令引入剛才我們建立的模板 ``` ```

3. if指令

在模板檔案上新增

你已通過實名認證

你未通過實名認證

在**中對str變數賦值

map.put("success", true);
在freemarker的判斷中,可以使用= 也可以使用==

4. list指令

需求,實現商品**表,如下圖:

(1)**中對變數goodslist賦值

list goodslist=new arraylist();

map goods1=new hashmap();

goods1.put("name", "蘋果");

goods1.put("price", 5.8);

map goods2=new hashmap();

goods2.put("name", "香蕉");

goods2.put("price", 2.5);

map goods3=new hashmap();

goods3.put("name", "橘子");

goods3.put("price", 3.2);

goodslist.add(goods1);

goodslist.add(goods2);

goodslist.add(goods3);

map.put("goodslist", goodslist);

(2)在模板檔案上新增

----商品**表----

$ 商品名稱: $ **:$

如果想在迴圈中得到索引,使用迴圈變數+_index就可以得到。

5. 內建函式

內建函式語法格式: 變數+?+函式名稱

5.1 獲取集合大小

我們使用size函式來實現,**如下:

共  $  條記錄
5.2 轉換json字串為物件我們通常需要將json字串轉換為物件,那如何處理呢?看**

開戶行:$  賬號:$

5.3 日期格式化**中對變數賦值:

datamodel.put("today", new date());
在模板檔案中加入

執行效果如下:

5.4 數字轉換為字串

**中對變數賦值:

map.put("point", 102920122);
修改模板:

累計積分:$
頁面顯示:

我們會發現數字會以每三位乙個分隔符顯示,有些時候我們不需要這個分隔符,就需要將數字轉換為字串,使用內建函式c

累計積分:$
頁面顯示效果如下:

6. 空值處理運算子

如果你在模板中使用了變數但是在**中沒有對變數賦值,那麼執行生成時會丟擲異常。但是有些時候,有的變數確實是null,怎麼解決這個問題呢?

6.1 判斷某變數是否存在:「??」

用法為:variable??,如果該變數存在,返回true,否則返回false 

aaa變數存在

aaa變數不存在

6.2缺失變數預設值:「!」我們除了可以判斷是否為空值,也可以使用!對null值做轉換處理 在模板檔案中加入

$
在**中不對aaa賦值,也不會報錯了,當aaa為null則返回!後邊的內容-

7. 運算子

7.1 算數運算子

freemarker表示式中完全支援算術運算,freemarker支援的算術運算子包括:+, - , * , / , %

7.2 邏輯運算子

邏輯運算子有如下幾個: 

邏輯與:&&

邏輯或:|| 

邏輯非:! 

邏輯運算子只能作用於布林值,否則將產生錯誤 

7.3 比較運算子

表示式中支援的比較運算子有如下幾個: 

1 =或者==:判斷兩個值是否相等.

2 !=:判斷兩個值是否不等.

3 >或者gt:判斷左邊值是否大於右邊值

4 >=或者gte:判斷左邊值是否大於等於右邊值

5 《或者lt:判斷左邊值是否小於右邊值

6 <=或者lte:判斷左邊值是否小於等於右邊值

注意: =和!=可以用於字串,數值和日期來比較是否相等,但=和!=兩邊必須是相同型別的值,否則會產生錯誤,而且freemarker是精確比較,"x","x ","x"是不等的.其它的執行符可以作用於數字和日期,但不能作用於字串,大部分的時候,使用gt等字母運算子代替》會有更好的效果,因為freemarker會把》解釋成ftl標籤的結束字元,當然,也可以使用括號來避免這種情況,如:

y)>

freemarker FTL 常見語法

freemarker ftl 常見語法大全freemarker的插值有如下兩種型別 1,通用插值 2,數字格式化插值 或 用於判斷如果存在,就輸出這個值 預設值 預設值 日期格式 20 三種不同的數字格式 20.00 20 assign foo ture 宣告變數,插入布林值進行顯示 yes 等大小...

freemarker FTL常用標籤及語法

判斷物件是否存在,若成立說明存在 if blockobjlist if blockobjlist else 判斷知否和某乙個值相等 先判斷是否存在,在判斷相等,如果該指定的引數不存在還比較相等的話就回出錯 if componentid componentid 1 list迴圈 迴圈遍歷list並給遍...

freemarker FTL常用標籤及語法

判斷物件是否存在,若成立說明存在 if blockobjlist if blockobjlist else 判斷知否和某乙個值相等 先判斷是否存在,在判斷相等,如果該指定的引數不存在還比較相等的話就回出錯 if componentid componentid 1 list迴圈 迴圈遍歷list並給遍...