FreeMarker是什麼?
一款模闆引擎。即一種基于模闆和要改變的資料, 并用來生成輸出文本(HTML網頁,電子郵件,配置檔案,源代碼等)的通用工具。
在模闆中,你可以專注于如何展現資料, 而在模闆之外可以專注于要展示什麼資料,展現就是:模闆+ 資料模型 = 輸出。

快速開始
pom.xml确定導入FreeMarker依賴包
配置application.yml相關配置
在templates目錄下放置.ftl檔案,意為freemarker templates layer。
編寫Controller,将模型存入request中:
簡單使用FreeMarker的标簽指令:
模闆一覽
${...}:FreeMarker将會輸出真實的值來替換大括号内的表達式,被稱為插值表達式。
<#../>:FTL标簽,以#開頭,自定義标簽則以@開頭。
list 指令的一般格式為: <#list sequence as loopVariable> repeatThis。 repeatThis 部分将會在給定的 sequence 周遊時在每一項中重複, 從第一項開始,一個接着一個。在所有的重複中, loopVariable 将持有目前周遊項的值。這個變量僅存在于 <#list ...> 和 <#list> 标簽内。
sequence 可以是任意表達式, 比如我們可以清單顯示示例資料模型中的水果,就像這樣:
上面示例中的一個問題是如果我們有0個水果,它仍然會輸出一個空的 <ul></ul>,而不是什麼都沒有。要避免這樣的情況,可以這麼來使用 list:
使用 include 指令, 我們可以在模闆中插入其他檔案的内容。
如果需要在每個頁面的下方都顯示版權資訊,可以将版權資訊單獨放在頁面檔案 copyright_footer.html 中:
使用時,用include引入該檔案即可:
内建函數很像子變量(如果了解Java術語的話,也可以說像方法), 它們并不是資料模型中的東西,是 FreeMarker 在數值上添加的。為了清晰子變量是哪部分,使用 ?(問号)代替 .(點)來通路它們。
所有内建函數參考:http://freemarker.foofun.cn/ref_builtins.html
一個不存在的變量和一個是null值的變量, 對于FreeMarker來說是一樣的。
不論在哪裡引用變量,都可以指定一個預設值來避免變量丢失這種情況, 通過在變量名後面跟着一個 !(歎号,譯者注)和預設值。就像下面的這個例子,當 user 不存在于資料模型時, 模闆将會将 user 的值表示為字元串 "visitor"。(當 user 存在時, 模闆就會表現出 ${user} 的值):
也可以在變量名後面通過放置 ?? 來詢問一個變量是否存在。将它和 if 指令合并, 那麼如果 user 變量不存在的話将會忽略整個問候的代碼段:
自定義指令
未帶參數宏調用
帶參數宏調用
嵌套調用
這部分可以參考我發在碼雲上的代碼:https://gitee.com/tqbx/springboot-samples-learn/tree/master/spring-boot-freemarker。