1. 概述

Thymeleaf 是一个用于处理和生成 HTML 的 Java 模板引擎。

本文我们将重点介绍 Thymeleaf 提供的 lists 工具对象,它能帮助我们完成一些常见的列表操作。

2. 获取列表长度

size 方法用于获取列表的长度。我们可以使用 th:text 属性来展示:

size: <span th:text="${#lists.size(myList)}"/>

其中 myList 是我们在 Controller 中传入的模型数据,例如:

@GetMapping("/size")
public String usingSize(Model model) {
    model.addAttribute("myList", getColors());
    return "lists/size";
}

3. 判断列表是否为空

isEmpty 方法用于判断列表是否为空:

<span th:text="${#lists.isEmpty(myList)}"/>

这个方法常用于条件判断,比如配合 th:ifth:unless 使用:

<span th:unless="${#lists.isEmpty(myList)}">列表不为空</span>

4. 判断元素是否存在

contains 方法用于判断某个元素是否存在于列表中:

myList contains red: <span th:text="${#lists.contains(myList, 'red')}"/>

✅ 若需判断多个元素是否都存在,可以使用 containsAll 方法:

myList contains red and green: <span th:text='${#lists.containsAll(myList, {"red", "green"})}'/>

5. 列表排序

sort 方法可以对列表进行排序。它有两个重载版本:

sort: <span th:text="${#lists.sort(myList)}"/>

sort with Comparator: <span th:text="${#lists.sort(myList, reverse)}"/>
  • 第一种不带比较器,按自然顺序排序;
  • 第二种接受一个 Comparator 参数,例如我们可以通过 model 传入一个倒序比较器 reverse

6. 转换为 List

toList 方法可以将 Iterable 或数组转换为 List,非常实用:

<span th:with="convertedList=${#lists.toList(myArray)}">
    converted list size: <span th:text="${#lists.size(convertedList)}"/>
</span>

上面代码中我们先将数组转为列表,再使用 #lists.size 获取其长度。

7. 总结

本文我们详细介绍了 Thymeleaf 中的 lists 工具对象,包括:

  • 获取长度:#lists.size
  • 判断空:#lists.isEmpty
  • 元素检查:#lists.contains / #lists.containsAll
  • 排序:#lists.sort
  • 类型转换:#lists.toList

这些方法简单粗暴,能显著提升模板中处理列表的效率。

如需查看完整示例代码,请访问 GitHub 仓库


原始标题:Thymeleaf lists Utility Object