一、List的循环
循环List是Thymeleaf中最常用和基础的循环之一,它能够快速地遍历List中所有元素,并将每个元素展示在模板中。下面是List循环的代码示例:
<table> <thead> <tr> <th>Name</th> <th>Age</th> <th>Phone</th> </tr> </thead> <tbody> <tr th:each="person : ${people}"> <td th:text="${person.name}">Name</td> <td th:text="${person.age}">Age</td> <td th:text="${person.phone}">Phone</td> </tr> </tbody> </table>
在上述代码中,我们使用了th:each指令来循环遍历people这个List。而在循环体中,使用th:text指令将person对象中的name、age和phone属性输出到HTML表格中对应的单元格中。
二、数组的循环
除了List以外,数组也是Thymeleaf中常用的循环对象。它的使用方式与List类似,下面是数组循环的代码示例:
<div th:each="num : ${numbers}"> <span th:text="${num}">1</span> </div>
与List循环不同的是,数组循环中的变量需要使用“:”符号,如“num : ${numbers}”中的“num”就是循环体中的变量。同时,循环体中需要使用th:text指令将数组元素输出到HTML中。
三、循环语法
Thymeleaf的循环语法比较简单,只需要使用th:each指令即可完成循环。该指令的语法如下:
th:each="item : ${list}"
其中,“item”是循环体中的变量名,“${list}”是要循环遍历的对象。当多重循环时,可以添加多个th:each指令,如:
<div th:each="group : ${groups}"> <h2 th:text="${group.name}">Group</h2> <ul> <li th:each="person : ${group.people}"> <span th:text="${person.name}">Name</span>, <span th:text="${person.age}">Age</span>, <span th:text="${person.phone}">Phone</span> </li> </ul> </div>
上述代码中,我们展示了如何在模板中进行多重循环。我们首先使用th:each指令遍历groups,接着在循环体中使用th:each指令遍历group对象中的people。最后,将人员信息输出到HTML中。
四、遍历序号
在一些场景下,可能需要在循环过程中累加计数。Thymeleaf提供了th:each指令中的“index”和“count”变量,用于记录当前元素的位置和累加的计数。下面是如何使用这两个变量的代码示例:
<div th:each="person, index : ${people}"> <p th:text="${index.count}+' - '+${person.name}">1 - John Smith</p> </div>
在上述代码中,我们使用“index.count”和“index.index”分别表示当前元素的累计数量和位置。同时,我们结合使用th:text指令输出当前元素的位置和name属性。
五、遍历次数
在一些场景下,可能需要在循环结束后统计出循环的次数。Thymeleaf提供了th:count指令来实现该功能。该指令的语法如下:
th:count="${{datas.list.size()}}"
其中,“${{datas.list.size()}}”表示需要统计的循环次数。使用该指令时,需要开启thymeleaf的“thymeleaf-extras-java8time”扩展包。下面是使用th:count指令的代码示例:
<div th:each="person : ${people}"> <p th:text="${person.name}" th:count="${{people.size()}}">John Smith</p> </div>
在上述代码中,我们使用th:count指令将循环的次数统计出来,并使用th:text指令输出了person对象中的name属性。
六、无序列表的遍历
除了在表格中展示数据外,循环可能在其他场景下也是很有用的。下面是如何使用Thymeleaf循环遍历无序列表的代码示例:
<ul> <li th:each="item : ${items}"> <span th:text="${item}">List Item</span> </li> </ul>
在上述代码中,我们使用th:each指令遍历items,并在循环体中将每个元素都展示为一个列表项。
七、循环生成指定的标签
循环不仅可以用来展示数据,还可以用来生成HTML标签。下面是如何使用Thymeleaf循环来生成指定标签的代码示例:
<th:block th:each="i : ${#numbers.sequence(1,5)}"> <th:block th:text="${i}" th:tag="${'h'+i}">1</th:block> </th:block>
在上述代码中,我们使用th:each指令遍历1-5的数值,并结合th:text和th:tag指令生成了h1-h5标签。
八、使用Map进行循环
除了List和数组,Thymeleaf中还支持使用Map进行循环。下面是如何使用Map进行循环的代码示例:
<ul> <li th:each="value : ${map}"> <span th:text="${value.key}">Key</span>: <span th:text="${value.value}">Value</span> </li> </ul>
在上述代码中,我们使用th:each指令遍历map,并使用th:text指令将key和value输出到HTML中。