<b>3.3.2 thymeleaf功能簡介</b>
在html頁面上使用thymeleaf标簽語言,用一個簡單的關鍵字“th”來标注。使用thymeleaf标簽語言的典型例子如下:
<h3
th:text="${actor.name}"></h3>
<img
th:src="@{/images/logo.png}"/>
其中,th:text指定了在标簽<h3>中顯示的文本,它的值來自于關鍵字“$”所引用的記憶體變量,th:src設定了标簽<img>的圖檔檔案的連結位址,既可以是絕對路徑,也可以是相對路徑。下面列出了thymeleaf的一些主要标簽和函數。
th:text,顯示文本。
th:utext:和th:text的差別是針對"unescaped text"。
th:attr:設定标簽屬性。
th:if or
th:unless:條件判斷語句。
th:switch,th:case:選擇語句。
th:each:循環語句。
#dates:日期函數。
#calendars:月曆函數。
#numbers:數字函數。
#strings:字元串函數。
#objects:對象函數。
#bools:邏輯函數。
#arrays:數組函數。
#lists:清單函數。
本章的執行個體工程将在視圖設計中使用thymeleaf的下列幾個主要功能,而有關thymeleaf的詳細說明和介紹可以通路它的官方網站http://www.thymeleaf.org/,以獲得更多的幫助。
1.?使用功能函數
thymeleaf有一些日期功能函數、字元串函數、數組函數、清單函數等,代碼清單3-11是thymeleaf使用日期函數的一個例子,#dates.format是一個日期格式化的使用執行個體,它将電影的建立日期格式化為中文環境的使用格式“'yyyy-mm-dd hh:mm:ss'”。
代碼清單3-11 thymeleaf使用函數
th:value="${movie.createdate}
? ${#dates.format(movie.createdate,'yyyy-mm-dd hh:mm:ss')} :''"
2.?使用程式設計語句
thymeleaf有條件語句、選擇語句、循環語句等。代碼清單3-12使用each循環語句來顯示一個資料清單,即在下拉清單框中使用循環語句來顯示所有的演員清單。
代碼清單3-12 th:each循環
<select
name="actorid" id="actorid">
<option value="">選擇演員</option>
<option
th:each="actor:${actors}"
th:value="${actor.id}"
th:text="${actor.name}">
</option>
</select>
3.?使用頁面架構模闆
thymeleaf的頁面架構模闆是比較優秀的功能。預先定義一個layout,它具有頁眉、頁腳、提示欄、導航欄和内容顯示等區域,如代碼清單3-13所示。其中,layout:fragment=
"
prompt"是一個提示欄,它可以讓引用的視圖替換顯示的内容;fragments/nav :: nav是一個導航欄并指定了視圖檔案,也就是說它不能被引用的視圖替換内容;layout:fragment="content"是一個主要内容顯示區域,它也能由引用的視圖替換顯示内容;fragments/footer :: footer是一個頁腳定義并且也指定了視圖檔案,即不被引用的視圖替換顯示内容。這樣設計出來的頁面模闆架構如圖3-1所示。
代碼清單3-13 layout模闆
<div
class="headerbox">
<div class="topbox">
<div class="toplogo
f-left">
<a href="#"><img
th:src="@{/images/logo.png}"/></a>
</div>
<div class="new-nav">
<h3>電影頻道</h3>
</div>
</div>
class="locationline" layout:fragment=" prompt ">
目前位置:首頁 &gt; <em>頁面</em>
<table
class="globalmainbox"
style="position:relative;z-index:1">
<tr>
<td class="columnleftbox"
valign="top">
<div
th:replace="fragments/nav :: nav"></div>
</td>
<td
class="whitespace"></td>
<td class="rightcolumnbox"
layout:fragment="content"></div>
</tr>
</table>
class="footbox" th:replace="fragments/footer ::
footer"></div>
圖3-1 頁面架構模闆
有了頁面模闆之後,就可以在一個首頁面視圖上引用上面的layout,并替換它的提示欄prompt和主要内容顯示區域content,其他頁眉、頁腳和導航欄卻保持同樣的内容,如代碼清單3-14所示。這樣就可以設計出一個使用共用模闆的具有統一風格特征的界面。
代碼清單3-14 使用layout模闆的視圖設計
<html
xmlns:th="http://www.thymeleaf.org"
layout:decorator="fragments/layout">
……
目前位置:首頁 &gt; <em >電影管理</em>
class="statisticbox w-782"
layout:fragment="content">
......