基本概念
freemarker是什么:模板引擎: 即一種基于模板和要改變的數據, 并用來生成輸出文本(HTML網頁,電子郵件,配置文件,源代碼等)的通用工具。
內建函數:對字符串等的操作都是freemarker的內建函數,就是本身的api,相當于java的方法。
指令:由freemarker識別并執行一步步操作的命令的形式
一、控制語句
if else
總體是這樣的結構:
其中(1)和(4)是必須的,
(2)(3)根據需要選擇,其中(2)可以出現任意多次,
(3)只能出現一次
<#if condition>----------- ---(1)
...
<#elseif condition2>----------(2)
...
<#else>-----------------------(3)
...
</#if>------------------------(4)
只有一個if的情況:
<#if x = 1>
x is 1
</#if>
包含elseif的情況:
<#if x = 1>
x is 1
<#elseif x = 2>
x is 2
<#elseif x = 3>
x is 3
</#if>
包含else的用法:
<#if x = 1>
x is 1
<#elseif x = 2>
x is 2
<#elseif x = 3>
x is 3
<#elseif x = 4>
x is 4
<#else>
x is not 1 nor 2 nor 3 nor 4
</#if>
switch
<#switch value>
<#case refValue1>
...
<#break>
<#case refValue2>
...
<#break>
<#case refValueN>
...
<#break>
<#default>
...
</#switch>
二、循環迭代結構
總體語句如下:
這里books是后臺傳來的集合,book為每次循環的對象。
<#list books as book>
//顯示book的name屬性的值
${book.name}
</#list>
如何獲取list集合中的下標序號----使用list的一個屬性:_index
<#list books as book>
${book_index}
</#list>
判斷集合不為空并且size大于0
<#if book?? && (books?size > 0)>-----前一個是判斷集合是否存在,后一個是
<#list books as book>
//do something
</#list>
</#if>
三、字符串的操作
以下假設后臺傳來的字符串為name
防止字符串不存在的時候報錯:${name!}
----------直接在后面加個嘆號就可以了
屏蔽html標簽:name?html
----------這樣寫就可以直接顯示html標簽,即使name為空,也不會報錯
判斷是否以某一特定字符串結尾:name?ends_with("mp4")
-------判斷name是否結尾是mp4
判斷是否以某一特定字符串開始:name?starts_with("J")
-------根據name的首字母是否是 "J" 返回布爾值true或false。
轉化為大寫:name?upper_case
轉化為小寫:name?lower_case
分割字符產:name?split(",")-----根據逗號來分割字符串,返回一個list
字符串的長度大于多少:<#if name?length gt 2>
----name的長度是否大于2 (大于gt、 小于lt、 大于等于gte、小于等于lte )
四、boolean類型值的處理
一般是將boolean類型的變量轉化為字符串:
value?string('true', 'false')-----value為true則返回字符串true,value為false則返回字符串false,
五、邏輯符
最常用的就是:并且(&&)、或者(||)
六、常用
(1)${(book.name)!}與${book.name!}
的區別
${(book.name)!}:無論是對象book為空,還是book的name屬性值為空,都不會報錯
${book.name!}:當對象book為空時,會報錯
參考
強烈推薦:FreeMarker手冊