一、Freemarker概述
FreeMarker是一個模板引擎,一個基於模板生成文本輸出的通用工具,使用純Java編寫;
FreeMarker被設計用來生成HTML Web頁面,特別是基於MVC模式的應用程序;
雖然FreeMarker具有一些編程的能力,但通常由Java程序準備要顯示的數據,由FreeMarker生成頁面,通過模板顯示準備的數據。
二、模版+模型數據=輸出
1、數據模型:
典型的數據模型是樹型結構,可以任意複雜和深層次。
對內層變量的訪問,需要從root開始,各部分用“.”分隔。
也有另外一種變量是使用數字索引,例如animals[0].name。
2、模版:
在FreeMarker模板中可以包括下面三種特定部分:
(1) ${…}:稱爲interpolations,FreeMarker會在輸出時用實際值進行替代
(2) FTL標記(FreeMarker模板語言標記):類似於HTML標記,爲了與HTML標記區分,用#開始(有些以@開始)
①If/elseif/else指令
<#if animals.python.price < animals.elephant.price>
Pythons are cheaper than elephants today.
<#else>
Pythons are not cheaper than elephants today.
</#if>
空值判斷可以寫成<#if book.name?? >
③switch指令
<#switch value>
<#case refValue1>
...
<#break>
③list指令
<#list animals as being>
<td>${being.name}<td>
</#list>
④include指令
<#include "/copyright_footer.html">
(3) 註釋:包含在<#-- -->
注意事項:
- FTL區分大小寫,所以list是正確的FTL指令,而List不是;${name}和${NAME}是不同的;
- Interpolation只能在文本中使用;
- FTL標記不能位於另一個FTL標記內部;
- 註釋可以位於FTL標記和Interpolation內部;
- 多餘的空白字符會在模板輸出時移除;
- FreeMarker會忽略FTL標記中的空白字符;