簡介
FreeMarker是模闆引擎,一個Java類庫。
- 模闆編寫為FreeMarker Template Language (FTL) 這種方式通常被稱為MVC (模型 視圖 控制器) 模式。它可以幫助從開發人員(Java程式員)中分離出網頁設計師(HTML設計師)。
FreeMarker入門學習筆記(一) FreeMarker入門學習筆記(一)
入門:
1. 模闆+資料模型 = 輸出
1.1. 資料模型
- 在模闆檔案放在Web伺服器之後,就像動态網頁一樣,當有人通路該頁面,FreeMarker會動态的轉換模闆,替換${}部分,之後将結果發送至通路者的Web浏覽器中。
- 保證模闆專注于顯示問題(視覺設計,布局和格式化)是高效使用模闆引擎的關鍵。
- 為模闆準備的資料整體被稱作為 資料模型,資料模型就是各種資料的集合(可以了解為樹形結構),這些資料可以通過一些getxx方法擷取。
1.2. 資料結構
- 如果是序列資料,則采用xx.xxx[0]的通路方式
2. 指令
2.1. 基本指令
- ${}這樣的表達式稱作interpolation(插值)
- FTL标簽(即指令)以#開頭
- FTL注釋不會出現在輸出中(頁面)
2.1.1. 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>
2.1.2. list指令的使用示例
<p>We have these animals:
<table border=1>
<#list animals as animal>
<tr><td>${animal.name}<td>${animal.price} Euros
</#list>
</table>
輸出如下:
<p>We have these animals:
<table border=1>
<tr><td>mouse<td>50 Euros
<tr><td>elephant<td>5000 Euros
<tr><td>python<td>4999 Euros
</table>
2.1.3. include指令的使用示例
當我們需要将頁面的某一部分多次展示時,就可以将它視為一個“模闆”,比如左邊的菜單,其代碼放在一個leftMenu.ftl中,然後在首頁面ftl中引入它。
leftMenu.ftl
<div class="page-sidebar">
<div class="sidebar-menugroup">
<div class="sidebar-grouptitle">個人中心</div>
<ul class="sidebar-menu">
<li class="sidebar-menuitem"><a href="notifications">最新通知</a></li>
<li class="sidebar-menuitem active"><a href="mybookings">我的預定</a></li>
<li class="sidebar-menuitem"><a href="mymeetings">我的會議</a></li>
</ul>
</div>
main.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
...
<#include '*/leftMenu.ftl'>
...
</body>
</html>
2.1.4.聯合使用指令
指令間可以很容易地互相嵌套。
2.1.5.使用内建函數
包括首字母大寫、大寫、給出項目個數等方法。
- animal.name?cap_first 給出 animal.name的首字母大寫版本
- user?upper_case 給出 user 值的大寫版本
- animals?size 給出 animals 序列中項目的個數
2.1.6.處理不存在的變量
?? 來詢問一個變量是否存在。如果user變量不存在,則會忽略“問候”的代碼段。
參考: 模闆一覽 - FreeMarker 中文官方參考手冊 (foofun.cn)