知識庫 / Spring / Spring MVC RSS 訂閱

Thymeleaf 迭代

Spring MVC
HongKong
4
02:04 PM · Dec 06 ,2025

1. 概述

Thymeleaf 是一款 多功能的 Java 模板引擎,用於處理 XML、XHTML 和 HTML5 文檔

在本快速教程中,我們將學習如何使用 Thymeleaf 進行迭代,以及該庫提供的其他功能。

有關 Thymeleaf 的更多信息,請參閲我們的入門文章。

2. Maven 依賴

為了創建此示例,我們將使用 Spring Framework 庫和 Thymeleaf 庫。

這裏我們可以看到我們的依賴項(thymeleafthymeleaf-spring):

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

3. 示例設置

在深入視圖層之前,讓我們為我們的示例創建一個 MVC 結構。

從模型層的代碼片段開始:

public class Student implements Serializable {
    private Integer id;
    private String name;
    // standard contructors, getters, and setters
}

讓我們也提供負責加載模型並將其返回到視圖層的控制器方法:

@GetMapping("/listStudents")
public String listStudent(Model model) {
    model.addAttribute("students", StudentUtils.buildStudents());
    return "listStudents.html";
}

在上述示例中,buildStudents()方法返回一個Student對象列表,然後我們將該列表添加到model中。

4. th:each 屬性

在 Thymeleaf 中,迭代是通過使用 th:each 屬性 實現的。

這個屬性的一個有趣之處在於,它可以接受和迭代多種數據類型,例如:

  • 實現 接口的 Object
  • 實現 接口的 Object
  • 數組
  • 任何其他 Object 都被視為包含一個元素的單值列表

現在,讓我們使用我們在上面的示例中設置的數據來調用

<tr th:each="student: ${students}">
    <td th:text="${student.id}" />
    <td th:text="${student.name}" />
</tr>

代碼片段展示了對我們的 Students 列表進行 th:each 迭代。模型屬性使用 ${}  語法訪問,並且列表中的每個元素都通過 student  變量傳遞到循環的主體。

5. 狀態變量

Thymeleaf 還 提供了一個有用的機制,通過狀態變量來跟蹤迭代過程.

狀態變量提供以下屬性:

  • index: 當前迭代索引,從 0 (零) 開始
  • count: 已經處理的元素的數量
  • size: 列表中元素的總數
  • even/odd: 檢查當前迭代索引是否為偶數或奇數
  • first:  檢查當前迭代是否為第一個
  • last: 檢查當前迭代是否為最後一個

讓我們看看狀態變量在我們的示例中是如何工作的:

<tr 
  th:each="student, iStat : ${students}" 
  th:style="${iStat.odd}? 'font-weight: bold;'" 
  th:alt-title="${iStat.even}? 'even' : 'odd'">
    <td th:text="${student.id}" />
    <td th:text="${student.name}" />
</tr>

在此,我們包含了 iStat.odd 屬性來評估條件併為當前行設置粗體樣式。同樣的操作在下一次評估中也執行,但這一次我們使用 iStat.even 通過 alt/title HTML 屬性打印值。

如果省略顯式創建狀態變量(如示例中的 iStat),我們可以通過簡單地使用 studentStat來調用我們的狀態變量,該變量是 student 變量與後綴 Stat 的聚合。

6. 結論

在本文中,我們探討了 Thymeleaf 庫提供的眾多功能之一。

我們介紹了 Thymeleaf 中使用 th:each 屬性進行迭代,以及其內置屬性。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.