Freemarker學習筆記第一篇(未完,後續會繼續並補充例子)

1,Freemarker文件由四個部分組成
①,文本
②,註釋,<#-- -->
③,插值,通用插值${...}和數字格式化插值#{...}或#{expr;format}
④,FTL指令
     規則:①開始標籤 <#directivename parameter>
               ②結束標籤</#directivename>
               ③空標籤<#directivename parameter/>
當指令是用戶指令而不是系統內建指令時,將#改爲@

2.1 通用插值的四種情況
①插值結果爲字符串,直接輸出
②插值結果爲數字,根據默認格式輸出,也可指定格式,格式化輸出
③插值結果爲日期,指定格式,格式化輸出
④插值結果爲布爾值,將結果轉化爲文本輸出

2.2 數字格式化插值
#{expr;format}格式化數字,規則:mX:小數部分最小m位
                                                  MX:小數部分最大M位

3.表達式
3.1 直接指定值

字符串:
①轉義字符
②r標記,r標記後的內容直接輸出

數值:
①數值直接輸出,不需要引號,小數用"."分開,不能使用分組","符號,不支持科學計數法
②數值不能省略小數點前面的0,所以".5"是錯誤的
③數值8,+8,8.00都是相同的

布爾值
直接使用true和false,不使用引號

集合
以方括號包括,各集合元素以英文“,”分隔,此外集合元素可是表達式
還可以使用數字範圍定義數字集合,比如2..5和5..2

map對象
{"key":value,"key":value},kye-value的形式,單key必須爲字符串

3.2 輸出變量值
①頂層變量
直接輸出

②集合元素
集合元素的索引以方括號指定,支持返回集合的子集合,例如week[2..5]

③Map元素
可以用[""]的形式,也可以用"."的形式,還可以混合使用

3.3字符串操作
①連接字符串,${"hello,${user}!"}或者${"hello" + ${user} + "!"}
②截取字符串,使用索引${book[0]},${book[1..5]}

3.4集合連接運算符
使用+號

3.5Map連接運算符
使用+號,如果有相同的key,右邊覆蓋左邊

3.6算術運算符
+-*/%
①兩邊必須都是數字
②如果兩邊有一邊是字符串,那麼就成了連接字符串
③使用內建函數int可以取整

3.7比較運算符
①=或== 相等
②!= 不等
③>或gt 大於
④>=或gte 大於等於
⑤<或lt 小於
⑥<=或者lte 小於等於

=和!=可用於字符串,數值和日期來比較是否相等,但兩邊類型必須相同,其他可用於數值,日期不能用於字符串,FreeMarker是精確比較
"x","x ","X"並不相等,大多數時候使用gt比>要好,因爲>是標籤結束符,但可用()來避免

3.8邏輯運算符
與&&
或||
非!
邏輯運算符只能用於布爾類型

3.9內建函數
在變量後緊跟?,?後緊跟內建函數,就可以通過內建函數輸出變量

字符串內建函數
①html 對字符串進行html編碼
②cap_first 字符串第一個字母大寫
③lower_case 字符串小寫
④upper_case 字符串大寫
⑤trim 去字符串前後空白

數字值內建函數
int,取數字的整數部分,結果帶符號

集合內建函數
size 獲取元素個數

3.10空值處理運算符

FreeMarker變量必須有值,否則拋出異常,java中null對於FreeMaker也是沒有值
兩個運算符
!指定缺失變量的默認值
??判斷變量值是否存在,variable!或variable!defaultvalue不要求變量與默認值類型一致

3.11運算符優先級
1,一元運算符:!
2,內建函數:?
3,乘除法:*, / , %
4,加減法:- , +
5,比較:> , < , >= , <= (lt , lte , gt , gte)
6,相等:== , = , !=
7,邏輯與:&&
8,邏輯或:||
9,數字範圍:.

4FreeMarker的常用指令
4.1 if指令
語法:
<#if condition>.....................
<#elseif condition>...............
<#else>...............
</#if>

4.2 switch,case,default,break指令
語法:
<#switch value>
<#case refvalue>..................<#break>
<#case refvalue>..................<#break>
<#defalut>.....................
</#switch>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章