如下指示我對Freemark最經常使用的標籤與問題的總結,詳情請參考官方文檔html
對空值作處理
對輸出的空值作處理,無返回值
-
輸出name的值:函數
- ${name}。若是name爲null,就會報錯。
- ${name!}。若是name爲null,就不會報錯,什麼也沒輸出
- ${name!"默認值"}。若是name爲null,就輸出」默認值」字符串
- ${name!100}。若是name爲null,就輸出100
-
輸出user.name的值:測試
- ${(user.name)!"默認值」},若是user或name爲null,就輸出默認值
- ${user.name!"默認值」},若是user爲null會報錯,若是name爲null,就輸出默認值。
-
輸出user.birthday的值:ui
- ${user.birthDate?string("yyyy-MM-dd")},若是user或birthday爲空,就會報錯。
- ${(user.birthDate?string("yyyy-MM-dd"))!},若是user或birthday爲null,什麼也沒輸出
- 使用default內建函數來處理:${user.name?default('vakin')} (較繁瑣)
測試是否爲null,返回boolean值
- product.color??將只測試color是否爲null
- (product.color)??將測試product和color是否存在null
值得注意的是??與?的區別
??是判斷對象是否爲空,例如:<#if object??> object對象不爲空(即object存在)</#if>code
?後面要加內建函數名,例如:<#if object?exists> object對象不爲空(即object存在)</#if>htm
邏輯語句
-
條件判斷對象
<#if condition>
...
<#elseif condition2>
...
<#elseif condition3>
...
...
<#else>
...
</#if>
-
condition
, condition2
, 等:將被計算成布爾值的表達式。
-
elseif
和 else
是可選的。
-
循環文檔
<#list sequence as item>
Part repeated for each item
<#else>
Part executed when there are 0 items
</#list>
-
else
部分是可選的,意思是sequence的size爲0的時候執行的語句, 並且僅僅從 FreeMarker 2.3.23 版本開始支持。
-
sequence
: 將咱們想要迭代的項,算做是序列或集合的表達式
-
item
: 循環變量 的名稱 (不是表達式)
- 在標籤之間的多個 "parts" 能夠是任意的FTL (包括嵌套的
list
)
注意事項
-
??與?的區別字符串
- ??是判斷對象是否爲空,例如:<#if object??> object對象不爲空(即object存在)</#if>
- ?後面要加內建函數名,例如:<#if object?exists> object對象不爲空(即object存在)</#if>