一、循環遍歷集合
thymeleaf是一個基於Java的模板引擎,可以用於服務器端Web開發,支持標準HTML文件。除了支持表單綁定等功能,thymeleaf還具有非常強大的foreach標籤。foreach標籤可以用來遍歷集合類型的對象,並對每個元素執行指定的操作。
下面是一個簡單的示例,展示如何使用foreach標籤遍歷一個List對象:
<table>
<thead>
<tr>
<th>編號</th>
<th>姓名</th>
<th>年齡</th>
</tr>
</thead>
<tbody>
<tr th:each="person : ${persons}">
<td th:text="${person.id}"></td>
<td th:text="${person.name}"></td>
<td th:text="${person.age}"></td>
</tr>
</tbody>
</table>
在代碼中,首先使用foreach標籤指定要遍歷的集合名稱以及遍歷時存儲每個元素的變量。然後在一個HTML表格中遍歷List對象中所有的Person對象,並將每個對象的ID、Name和Age字段顯示在表格中。
需要注意的是,在使用thymeleaf的foreach標籤時,必須在HTML標籤中使用th:each屬性。th:each屬性指定了要遍歷的集合變量名及存儲每個元素的變量名,這個變量名可以自定義。然後在每次循環時,需要在對應的HTML標籤上使用th:text或th:value等屬性來讀取、解析、渲染數據,這些屬性可以根據需要自定義。
二、使用迭代器遍歷集合
除了遍歷List集合,使用foreach標籤還可以遍歷其他類型的集合,如Set、Map等。下面是一個示例,展示如何使用迭代器遍歷一個Map對象:
<table>
<thead>
<tr>
<th>鍵</th>
<th>值</th>
</tr>
</thead>
<tbody>
<tr th:each="entry : ${map.entrySet()}">
<td th:text="${entry.key}"></td>
<td th:text="${entry.value}"></td>
</tr>
</tbody>
</table>
在代碼中,我們使用foreach標籤遍歷Map.entrySet()的迭代器,遍歷每個Map.Entry對象並將其鍵值對顯示在HTML表格中。需要注意的是,在使用Map.entrySet()時,得到的是一個Set類型的對象,而不是Map類型。因此使用迭代器遍歷Map對象時,需要在th:each屬性中明確指定使用entrySet方法。
三、循環中的條件判斷和計數器
thymeleaf foreach標籤不僅可以進行簡單的遍歷和顯示操作,還可以在遍歷時加入條件判斷和計數器等功能。下面是一個示例,展示如何在循環中加入條件判斷和計數器的功能:
<table>
<thead>
<tr>
<th>編號</th>
<th>姓名</th>
<th>年齡</th>
</tr>
</thead>
<tbody>
<tr th:each="person,iterStat : ${persons}">
<td th:text="${iterStat.count}"></td>
<td th:text="${person.name}"></td>
<td th:text="${person.age}"></td>
<td th:if="${iterStat.first}">最年輕的人</td>
<td th:if="${iterStat.last}">最年長的人</td>
</tr>
</tbody>
</table>
在代碼中,我們使用th:each屬性來定義person和iterStat這兩個變量。其中,person表示集合中的每個元素,iterStat則是用來存儲當前元素在集合中的位置、計數器、判斷是否為第一個元素等信息的對象。這些信息可以用來進行條件判斷和計數器操作。在上述示例中,我們在HTML表格中的第3列中加入了計數器功能,用於顯示每個person在集合中的位置。同時,我們在第4和5列中分別加入了條件判斷和計數器功能,分別用於判斷當前person是否是最年輕的人和最年長的人。
四、循環中的參數傳遞
在thymeleaf foreach標籤中,還可以傳遞額外的參數給模板中的其他標籤使用。下面是一個示例,展示如何在循環中傳遞參數並使用th:replace標籤生成模板片段:
<div th:each="person : ${persons}">
<h4 th:text="${person.name}"></h4>
<p th:text="${person.age}"></p>
<div th:replace="fragments/address :: address(${person.address})"></div>
</div>
在代碼中,我們使用th:replace屬性將當前person的address信息傳遞給模板片段中的address標籤,並使用地址信息生成一個HTML片段。這個HTML片段可以是任意的HTML代碼,僅需要通過th:fragment屬性來命名。在模板片段中,我們使用th:with屬性來接收傳遞的參數並使用th:text標籤進行顯示操作。
五、總結
thymeleaf foreach標籤是一個非常強大的模板引擎標籤,常用於對集合進行遍歷和處理操作。在使用foreach標籤時,可以結合條件判斷、計數器和參數傳遞等功能,生成動態、高效的HTML頁面。需要注意的是,在使用foreach標籤時,必須明確指定要遍歷的集合名稱及存儲每個元素的變量名,並在循環中使用th:text或th:value等屬性來讀取、解析、渲染數據。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/249215.html