freemarker 語法詳解

2021-07-08 18:44:04 字數 3732 閱讀 2373

1 擷取字串

有的時候我們在頁面中不需要顯示那麼長的字串,比如新聞標題,這樣用下面的例子就可以自定義顯示的長度

<#if title.content?length lt 8>

$<#else>

$...

意思就是如果這個字串的長度小於8,那麼就正常顯示,反之則取4位

注意:常用的比較運算子

=(==):判斷兩個值是否相等

!=:不相等

>(gt):判斷左邊是否大於右邊

>=(gte):

<(lt):

<=(lte):

2 連線字串

$ //輸出結果為:hello,swiftlet.net!

3 日期格式和boolean型別,轉化為string型別

$      

輸出結果如下:

2003-04-08 21:24:44

<#assign foo=true/>

$ //輸出結果:yes

4 排序

公升序用sort_by()

<#list list?sort_by("字段") as x>

降序用sort_by()?reverse

<#list list?sort_by("字段")?reverse as x>

5 去空格

$6 數值精度控制

mx:小數部分最小x位。

mx:小數部分最大x位。

<#assign x=2.582/>

<#assign y=4/>

##//4##

7 內建函式

html:字串中所有的特殊html字元都需要用實體引用來代替(比如《代替<)

cap_first:字串的第乙個字母變為大寫形式

lower_case:字串的小寫形式

upper_case:字串的大寫形式

trim:去掉字串首尾的空格

序列使用的內建函式:

size:序列中元素的個數

數字使用的內建函式:

int:數字的整數部分(比如-1.9?int就是-1)9>.空值運算子

length:字串的長度

string :把其他格式的資料,轉化為string型別$$

假設字串test儲存」tom & jerry」,那麼輸出為:

tom & jerry

tom & jerry$$

$假設seasons儲存了序列"winter", "spring", "summer", "autumn",那麼上面的輸出將會是:

4spring

horse

8 頂層變數

所謂頂層變數就是直接放在資料模型中的值。

map root = new hashmap();

root.put("name","admin");//name是乙個頂層物件

對於頂層變數,直接使用$來輸出變數值

9 集合連線運算子

集合連線運算是將兩個集合連線成乙個新的集合,連線集合的運算子是'+'.

<#list ["一","二","三"] + ["四","五","六"] as x>

$//輸出結果如下:

一二三四五六

10 算術運算子

取整運算

<#assign x=5>

$//2

$//1

$ //1

$//-1

11 list、break指令

<#list sequence as item>

...tem_index:當前變數的索引值.

item_has_next:是否存在下乙個物件.

<#list ["星期一","星期二","星期三","星期四","星期五","星期六"] as x>

$.$<#if x_has_next>,

<#if x="星期四"><#break>

輸出結果:

1.星期一,

2.星期二,

3.星期三,

4.興趣四,

12.freemarker的變數必須賦值,否則就會丟擲異常。而對於freemarker來說,null值和不存在的變數是完全一樣的,因為freemarker無法理解null值。freemarker提供兩個運算子來避免空值:

(1)!運算子:指定缺失變數的預設值;

(2)??運算子:判斷變數是否存在。

!運算子有兩種用法:variable!或variable!defaultvalue。第一種用法不給變數指定預設值,表明預設值是空字串、長度為0的集合、或長度為0的map物件。

注意:使用!運算子指定預設值並不要求預設值的型別和變數型別相同。下面是乙個小例子:

<#-- $沒有定義這個變數,會報異常!-->

$ <#--沒有定義這個變數,預設值是空字串!-->

$ <#--沒有定義這個變數,預設值是字串abc!-->

??運算子返回布林值,如:variable??,如果變數存在,返回true,否則返回false。一般情況下與if指令共同使用。將它和if指令合併,如下面的例子:如果user變數不存在的話將會忽略整個問候**段:

<#if user??>

13.操作字串內建函式

1.substring(start,end)從乙個字串中擷取子串

start:擷取子串開始的索引,start必須大於等於0,小於等於end

end: 擷取子串的長度,end必須大於等於0,小於等於字串長度,如果省略該引數,預設為字串長度。

2.cap_first 將字串中的第乙個單詞的首字母變為大寫。

3.uncap_first將字串中的第乙個單詞的首字母變為小寫。

4.capitalize將字串中的所有單詞的首字母變為大寫

5.date,time,datetime將字串轉換為日期

注意:如果指定的字串格式不正確將引發錯誤

6.ends_with 判斷某個字串是否由某個子串結尾,返回布林值

注意:布林值必須轉換為字串才能輸出

7.html 用於將字串中的<、>、&和"替換為對應得<>":&

8.index_of(substring,start)在字串中查詢某個子串,返回找到子串的第乙個字元的索引,如果沒有找到子串,則返回-1。

start引數用於指定從字串的那個索引處開始搜尋,start為數字值。

如果start大於字串長度,則start取值等於字串長度,如果start小於0,則start取值為0。

9.length返回字串的長度

10.lower_case將字串轉為小寫

11.upper_case將字串轉為大寫

12.contains 判斷字元中是否包含某個子串。返回布林值

注意:布林值必須轉換為字串才能輸出

13.number將字串轉換為數字

14.replace用於將字串中的一部分從左到右替換為另外的字串。

15.split使用指定的分隔符將乙個字串拆分為一組字串

16.trim 刪除字串首尾空格

運算元字內建函式

1.c 用於將數字轉換為字串

2.string用於將數字轉換為字串

freemarker中預訂義了三種數字格式:number,currency(貨幣)和percent(百分比)其中number為預設的數字格式轉換

操作布林值內建函式

string用於將布林值轉換為字串輸出

true轉為"true",false轉換為"false"

foo?string("yes","no")如果布林值是true,那麼返回"yes",否則返回no

freemarker 常見語法

2014 06 09 21 19 15 分類 freemarker 舉報 字型大小訂閱 格式比較亂一些,適合ctrl f搜尋關鍵字 freemarker的插值有如下兩種型別 1,通用插值 2,數字格式化插值 或 用於判斷如果存在,就輸出這個值 預設值 預設值 日期格式 20 三種不同的數字格式 20...

Freemarker語法概要

freemarker基本語法 訪問請求 servlet action獲取資料 跳往目標模板頁面ftl pojo public class student implements serializable 例如在乙個 servlet 中組織將要在模板中使用到的資料 system.out.println ...

Freemarker簡單語法

assign name xx 在頁面定義乙個變數 讀取名稱為name的變數 include ftl 用於模板檔案的巢狀 if else if else判斷語句 list userlist as user 遍歷名稱為userlist的集合 userlist size 獲取userlist 集合的長度 ...