Freemarker使用筆記

什麼是 FreeMarker?

FreeMarker 是一款 模板引擎: 即一種基於模板和要改變的數據, 並用來生成輸出文本(HTML網頁,電子郵件,配置文件,源代碼等)的通用工具。 它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發產品的組件。

模板編寫爲FreeMarker Template Language (FTL)。它是簡單的,專用的語言, 不是 像PHP那樣成熟的編程語言。 那就意味着要準備數據在真實編程語言中來顯示,比如數據庫查詢和業務運算, 之後模板顯示已經準備好的數據。在模板中,你可以專注於如何展現數據, 而在模板之外可以專注於要展示什麼數據。

定義變量

<#assign name1=value1 name2=value2 ... nameN=valueN><#assign same as above... in namespacehash><#assign name>
  capture this
</#assign><#assign name in namespacehash>
  capture this
</#assign>

include 標籤引入其他文件模板文件

<#include "/copyright_footer.html">

if elseif else 標籤使用 

<#if condition> </#if>

<#if animals.python.price < animals.elephant.price>
  Pythons are cheaper than elephants today.
<#elseif animals.elephant.price < animals.python.price>
  Elephants are cheaper than pythons today.
<#else>
  Elephants and pythons cost the same today.
</#if>

 

list標籤遍歷數組

<ul>
<#list misc.fruits as fruit>
  <li>${fruit}
</#list>
</ul>

 以上遍歷在數組爲空的情況下,會生成<ul></ul>標籤。再有些情況下,我們希望避免此類情況。我們可以這樣遍歷數組,如下代碼:

<#list misc.fruits>
  <ul>
    <#items as fruit>
      <li>${fruit}
    </#items>
  </ul>
</#list>

如果我們想要輸出<p>Fruits: orange, banana類型格式數據

那麼我們該如何遍歷數組呢?強大的freemarker也提供了支持,請看如下代碼:

<p>Fruits: <#list misc.fruits as fruit>${fruit}<#sep>, </#list>

 注意:<#sep>, </#sep>,只有當集合List還有下一個元素時,標籤語言纔會被執行,保證最後一個沒有

如果集合爲空時,會輸出<p>Fruits:,此時是我們不想要的結果,list標籤還有類似if標籤的功能,也可以使用else標籤。

<p>Fruits: <#list misc.fruits as fruit>${fruit}<#sep>, <#else>None</#list>

 實現類似的功能我們還可以這樣寫:

<p>Fruits: ${fruits?join(", ", "None")}

就是如此簡單。

最後我們可以綜合使用以上標籤:listitemssepelse

<#list misc.fruits>
  <p>Fruits:
  <ul>
    <#items as fruit>
      <li>${fruit}<#sep> and</#sep>
    </#items>
  </ul>
<#else>
  <p>We have no fruits.
</#list>
處理null值,或者誤輸入不存在的數據模型model,設置默認值,我們該如何處理呢?用!。

<h1>Welcome ${user!"visitor"}!</h1>

如果我們想判斷這個變量是否丟失或者不存在的情況。我們可以在這個變量後面添加雙問號??,譬如如下:

<#if user??><h1>Welcome ${user}!</h1></#if>

字符串內置函數:

英文文檔參考:https://freemarker.apache.org/docs/ref_builtins_string.html

中文文檔參考:http://freemarker.foofun.cn/ref_builtins_string.html

以上是我工作常用的標籤指令。

詳細更多可以參考中文官網:http://freemarker.foofun.cn/index.html

英文官網:https://freemarker.apache.org/

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