深色模式
表达式工具对象
除了上述基础对象外,Thymeleaf 还提供了一组工具对象,帮助我们在表达式中完成各类常用操作。这些工具对象同样以 # 开头引用,核心工具对象及用途如下:
| 工具对象 | 功能说明 |
|---|---|
#execInfo | 获取当前正在处理的模板的信息(如模板名称、模板模式等) |
#messages | 在变量表达式中获取外部化消息,功能等价于 #{…} 消息表达式语法 |
#uris | 对 URL/URI 片段进行转义处理(如处理特殊字符) |
#conversions | 执行配置的转换服务(若有),实现数据类型转换 |
#dates | 处理 java.util.Date 对象:格式化、提取年/月/日等组件 |
#calendars | 与 #dates 功能类似,但针对 java.util.Calendar 对象 |
#temporals | 处理 JDK8+ 中 java.time API(LocalDate/LocalDateTime 等)的日期时间对象 |
#numbers | 格式化数值对象(如设置小数位数、千分位分隔符等) |
#strings | 处理 String 对象:包含判断、前缀/后缀判断、拼接/截取等 |
#objects | 通用的对象处理方法(如空值判断、获取对象类名等) |
#bools | 布尔值相关的评估方法(如逻辑判断、布尔值转换等) |
#arrays | 数组处理方法(如长度获取、是否包含元素、转集合等) |
#lists | List 集合处理方法(如判空、获取大小、过滤、排序等) |
#sets | Set 集合处理方法(如判空、去重、交集/并集等) |
#maps | Map 集合处理方法(如获取键值、判空、遍历等) |
#aggregates | 对数组/集合进行聚合操作(如求和、求平均值、找最大值等) |
#ids | 处理可能重复的 id 属性(如迭代生成元素时的 id 去重) |
各工具对象提供的具体方法可参考附录 B。
核心用法解释
- 工具对象的调用方式: 工具对象通过
#{工具对象名.方法名(参数)}调用,例如:html<!-- 格式化 Date 对象为指定格式 --> <span th:text="${#dates.format(today, 'yyyy-MM-dd')}">2024-01-01</span> <!-- 判断字符串是否为空或空白 --> <span th:text="${#strings.isEmpty(username) ? '匿名用户' : username}">张三</span> <!-- 格式化数字为保留2位小数 --> <span th:text="${#numbers.formatDecimal(price, 1, 2)}">99.99</span> - 工具对象的核心价值: 无需在控制器中提前处理数据(如日期格式化、字符串判空),直接在模板中完成通用操作,简化后端代码,同时保持模板逻辑的完整性。
- 版本适配说明:
#dates/#calendars适配传统的Date/Calendar类;#temporals专为 JDK8+ 的java.time新日期 API 设计,是推荐的日期处理方式。
总结
- Thymeleaf 提供的工具对象覆盖了日期、字符串、数值、集合等全场景的通用操作,以
#开头调用,是模板中处理数据的“便捷工具库”。 - 工具对象能减少控制器的重复代码,直接在模板中完成数据格式化、判空、聚合等操作,提升开发效率。
- 不同工具对象针对不同数据类型(如
#dates对应 Date、#temporals对应 java.time),需根据项目的 JDK 版本和数据类型选择使用。
