Thymeleaf是用來開發Web和獨立環境項目的現代服務器端Java模板引擎。html
Thymeleaf的主要目標是爲您的開發工做流程帶來優雅的天然模板 - HTML。能夠在直接瀏覽器中正確顯示,而且能夠做爲靜態原型,從而在開發團隊中實現更強大的協做。java
藉助Spring Framework的模塊,能夠根據本身的喜愛進行自由選擇,可插拔功能組件,Thymeleaf是現代HTML5 JVM Web開發的理想選擇 - 儘管它能夠作的更多。數組
Spring官方支持的服務的渲染模板中,並不包含jsp。而是Thymeleaf和Freemarker等,而Thymeleaf與SpringMVC的視圖技術,及SpringBoot的自動化配置集成很是完美,幾乎沒有任何成本,你只用關注Thymeleaf的語法便可。瀏覽器
點擊next服務器
nextapp
點擊next 等待maven導入依賴less
首先準備一個controllerjsp
@Controller public class FirstController { @GetMapping("index1") public String index1(Model model){ model.addAttribute("msg", "Hello, Thymeleaf!"); return "index1"; } }
再新建一個html(在resources下的templates下建立),在html命名空間加入下面,會出現語法提示maven
xmlns:th="http://www.thymeleaf.org"
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>hello</title> </head> <body> <h1>Success</h1> <!--/*@thymesVar id="msg" type="111"*/--> <div th:text="${msg}"></div> </body> </html>
啓動項目工具
先建立個實體類
public class User { String name; int age; String sex; }
在controller裏添加以下
@GetMapping("index2") public String index2(Model model){ User user = new User(); user.setName("張三"); user.setAge(18); user.setSex("男"); model.addAttribute("user",user); return "index2"; }
新建一個index2.html
<table class="list"> <tr> <th>姓名</th> <th>年齡</th> <th>性別</th> </tr> <tr> <td th:text="${user.name}"></td> <td th:text="${user.age}"></td> <td th:text="${user.sex}"></td> </tr> </table>
在頁面獲取user數據
若是數據量較大須要頻繁地使用user,能夠提供自定義變量解決:
<tr th:object="${user}"> <td th:text="*{name}"></td> <td th:text="*{age}"></td> <td th:text="*{sex}"></td> </tr>
算術運算
支持的算術運算符:+ - * / %
<span th:text="${user.age}"></span> <span th:text="${user.age}%2 == 0"></span>
比較運算
>
, <
, >=
、<=, 但 >,<不能直接使用,
要使用別名gt (>), lt (<), ge (>=), le (<=), not (!) , Also eq (==), neq/ne (!=)
條件運算
三元運算:條件?條件成立的結果:條件不成立的結果
th:each
<table class="list"> <tr> <th>姓名</th> <th>年齡</th> <th>性別</th> </tr> <tr th:each="u : ${user}"> <td th:text="*{u.name}"></td> <td th:text="*{u.age}"></td> <td th:text="*{u.sex}"></td> </tr> </table>
@GetMapping("index2") public String index2(Model model){ List<User> user = new ArrayList<>(); user.add(new User("張三",18,"男")); user.add(new User("李四",19,"男")); user.add(new User("王五",18,"女")); model.addAttribute("user",user); return "index2"; }
運行結果
迭代的同時,也能夠獲取迭代對象的狀態
例
<tr th:each="u,stat : ${user}"> <td th:text="*{u.name}"></td> <td th:text="*{u.age}"></td> <td th:text="*{u.sex}"></td> </tr>
th:if 或者 th:unless,二者的意思相反
<span th:if="${user.age} < 25">年輕人</span>
若是爲true,則標籤會渲染到頁面,不然不會渲染。
<div th:switch="${user.role}"> <p th:case="'teacher'">教師</p> <p th:case="'student'">學生</p> <p th:case="*">其它</p> </div>
th:case="*"
表示默認,放最後。Thymeleaf中提供了一些內置對象,而且在這些對象中提供了一些方法,方便咱們來調用。獲取這些對象,須要使用#對象名
來引用。
添加日期類型對象
@GetMapping("index3") public String index3(Model model){ model.addAttribute("today", new Date()); return "index3"; }
<p>今天是:<span th:text="${#dates.format(today,'yyyy-MM-dd')}">2019-12-17</span></p>
對象 | 做用 |
---|---|
#dates |
處理java.util.date的工具對象 |
#calendars |
處理java.util.calendar的工具對象 |
#numbers |
用來對數字格式化的方法 |
#bools |
用來判斷布爾值的方法 |
#arrays |
用來護理數組的方法 |
#strings |
用來處理字符串的方法 |
#lists |
用來處理List集合的方法 |
#sets |
用來處理set集合的方法 |
#maps |
用來處理map集合的方法 |