Thymeleaf 模板 springboot集成使用
一.Thymeleaf是什么?
? ? ? ? ??簡單說, Thymeleaf 是一款用于渲染XML/XHTML/HTML5內容的模板引擎,類似我之前用過的FreeMarker 。由于它支持 html 原型,然后在 html 標簽里
? ? ?通過增加額外的屬性來達到模板+數據的展示方式。瀏覽器解釋 html 時會忽略未定義的標簽屬性,所以 thymeleaf 的模板可以靜態地運行;當有數據返回到頁面時,Thymeleaf 標簽會動態地替換掉靜態內容,使頁面動態顯示。
優勢:1.Thymeleaf?開箱即用的特性。它提供標準和spring標準兩種方言。
? ? ? ? ? ?2.Thymeleaf 提供spring標準方言和一個與 SpringMVC 完美集成的可選模塊,可以快速的實現表單綁定、屬性編輯器、國際化等功能。
1.添加依賴。
2.html 頁面需添加:
<html xmlns:th="http://www.thymeleaf.org">二.基本使用.? ? ??
? ? ?1.定義和引用模板
? ? ? ?日常開發中,我們經常會將導航欄,頁尾,菜單等部分提取成模板供其它頁面使用。
? ? ? ?在Thymeleaf?中,我們可以使用th:fragment屬性來定義一個模板。
? ? ? ?我們可以新建一個簡單的頁尾模板,如:/WEB-INF/templates/footer.html,內容如下:
? ? ?上面定義了一個叫做copyright的片段,接著我們可以使用th:include或者th:replace屬性來使用它:
? ? ? th:include 和 th:replace區別
? ? ?th:include 是加載模板的內容,而th:replace則會替換當前標簽為模板中的標簽
三.其他常見,字面量,對象,集合等的應用
??后臺存入了測試數據
@PostMapping("/greet")public ModelAndView greetingSubmit(@ModelAttribute(value="greeting") Greeting greeting) {
ModelAndView mov = new ModelAndView("result");
greeting.setNow(new Date());
greeting.setRole("admin");
ArrayList<Greeting> list = new ArrayList<>();
list.add(greeting);
list.add(greeting);
list.add(greeting);
mov.addObject("greeting",greeting);
mov.addObject("name","bin");
mov.addObject("execMode","execMode");
mov.addObject("list",list);
return mov;
}
?
頁面的獲取方法
<!DOCTYPE HTML><html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Handling Form Submission</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Result</h1>
<!--/*@thymesVar id="greeting" type="com.zto.quickstart.model.Greeting"*/-->
<!--bean值替換 -->
<div th:object="${greeting}">
<p th:text="'id: ' + *{id}"/>
<p th:text="'content: ' + *{content}"/>
<!--日期格式 -->
<p th:text="'content: ' + ${#dates.format(greeting.now, 'yyyy-MM-dd')}">2017-12-01</p>
<!--字符串替換 -->
<span th:text="'Welcome , '+ ${name} +'!'"/>
<!--運算符/條件-->
<p th:if="${greeting.id} > 1" />
<p th:text ="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"/>
<!--Thymeleaf同樣支持多路選擇Switch結構-->
<div th:switch="${greeting.role}">
<p th:case="'admin'">User is admin</p>
<p th:case="#{roles.manager}">User is a manager</p>
<!--默認屬性default可以用*表示-->
<p th:case="*">這里的內容都會輸出</p>
</div>
<table>
<tr>
<th>id</th>
<th>content</th>
<th>now</th>
</tr>
<tr th:each="list : ${greeting}">
<td th:text="${greeting.id}">Onions</td>
<td th:text="${greeting.content}">2.41</td>
<td th:text="${#dates.format(greeting.now, 'yyyy-MM-dd')}">8</td>
</tr>
</table>
<h4>Thymeleaf提供了一系列Utility對象(內置于Context中),可以通過#直接訪問</h4>
<!--<h5>#dates日期日期格式化</h5>-->
<!--${#dates.format(date, 'dd/MMM/yyyy HH:mm')}-->
<!--${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}-->
<!--${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}-->
<!--${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}-->
<!--date-->
<h5>#dates創建日期</h5>
<p th:text="${#dates.createNow()}"></p>
<p th:text="${#dates.createToday()}"></p>
<!--String-->
<h5>String判斷字符串是否為空</h5>
<p th:text="${#strings.isEmpty(name)}"></p>
<h5>String判斷內對象是否為空</h5>
<p th:text="${#strings.listIsEmpty(list)}"></p>
<!--${#strings.arrayIsEmpty(nameArr)}-->
<!--${#strings.setIsEmpty(nameSet)}-->
<p th:text="${#strings.startsWith(name,'bin')}"></p>
<p th:text="${#strings.endsWith(name,'bin')}"></p>
<h5>String判斷內長度</h5>
<p th:text="${#strings.length(list)}"></p>
<h5>String判斷equals</h5>
<p th:text="${#strings.equals(name)}"></p>
<a href="/greeting">Submit another message</a>
<div th:include="footer :: copyright"></div>
</div>
</body>
頁面展示的效果
?
四.表單中的使用
</head><body>
<h4>測試表單</h4>
<!--/*@thymesVar id="greeting" type="com.zto.quickstart.model.Greeting"*/-->
<!--/*@thymesVar id="Greeting" type=""*/-->
<form th:action="@{/greet}" th:object="${greeting}" method="post" th:method="post">
<!--bean值替換 -->
<input type="text" th:field="${greeting.id}"/>
<input type="text" th:field="*{content}"/>
<input type="submit"/>
</form>
</body>
</html>
其中th:object="${greeting}"指定了對象屬性綁定。與后臺控制器接受的對象一致,如下:
?
@PostMapping("/greet")public ModelAndView greetingSubmit(@ModelAttribute(value="greeting") Greeting greeting) {
...
return mov;
}
?
轉載于:https://www.cnblogs.com/xwy6/p/8317497.html
總結
以上是生活随笔為你收集整理的Thymeleaf 模板 springboot集成使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】Android编码规范建议18条
- 下一篇: python中的引用、浅拷贝和深拷贝