Thymeleaf入門與基礎語法

1.簡介

  • Thymeleaf是用來開發Web和獨立環境項目的現代服務器端Java模板引擎。html

  • Thymeleaf的主要目標是爲您的開發工做流程帶來優雅的天然模板 - HTML。能夠在直接瀏覽器中正確顯示,而且能夠做爲靜態原型,從而在開發團隊中實現更強大的協做。java

  • 藉助Spring Framework的模塊,能夠根據本身的喜愛進行自由選擇,可插拔功能組件,Thymeleaf是現代HTML5 JVM Web開發的理想選擇 - 儘管它能夠作的更多。數組

  • Spring官方支持的服務的渲染模板中,並不包含jsp。而是Thymeleaf和Freemarker等,而Thymeleaf與SpringMVC的視圖技術,及SpringBoot的自動化配置集成很是完美,幾乎沒有任何成本,你只用關注Thymeleaf的語法便可。瀏覽器

2.環境準備

點擊next服務器

nextapp

點擊next 等待maven導入依賴less

2.快速開始

2.1

首先準備一個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>

啓動項目工具

3 基礎語法

3.1變量的使用

先建立個實體類

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>

3.2運算

  • 算術運算

    支持的算術運算符:+ - * / %

    <span th:text="${user.age}"></span>
    <span th:text="${user.age}%2 == 0"></span>
  • 比較運算

    >, <, >= 、<=, 但 >,<不能直接使用,

    要使用別名gt (>), lt (<), ge (>=), le (<=), not (!) , Also eq (==), neq/ne (!=)

  • 條件運算

    三元運算:條件?條件成立的結果:條件不成立的結果

3.3循環

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";
    }

運行結果

迭代的同時,也能夠獲取迭代對象的狀態

  • index,從0開始的角標
  • size,總元素個數
  • count,元素的個數,從1開始
  • current,當前遍歷到的元素
  • even/odd,返回是否爲奇偶,boolean值
  • first/last,返回是否爲第一或最後,boolean值

<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>

3.4邏輯判斷

th:if 或者 th:unless,二者的意思相反

<span th:if="${user.age} < 25">年輕人</span>

若是爲true,則標籤會渲染到頁面,不然不會渲染。

3.5switch

<div th:switch="${user.role}">
  <p th:case="'teacher'">教師</p>
  <p th:case="'student'">學生</p>
  <p th:case="*">其它</p>
</div>
  • 須要注意的是,一旦有一個th:case成立,其它的則再也不判斷。與java中的switch是同樣的。
  • th:case="*"表示默認,放最後。

3.6內置對象

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集合的方法
相關文章
相關標籤/搜索