深色模式
聚合工具(Aggregates)
#aggregates:是用于对数组或集合执行聚合计算的工具方法集合:
java
/*
* ======================================================================
* 请查阅 org.thymeleaf.expression.Aggregates 类的 Javadoc API 文档
* ======================================================================
*/
/*
* 计算总和。若数组或集合为空,则返回 null
*/
${#aggregates.sum(array)}
${#aggregates.sum(collection)}
/*
* 计算平均值。若数组或集合为空,则返回 null
*/
${#aggregates.avg(array)}
${#aggregates.avg(collection)}补充说明(贴合 Thymeleaf 数据聚合技术语境)
1. 核心术语解析
| 英文术语 | 译法/说明 |
|---|---|
| Aggregates | 聚合工具类(Thymeleaf 表达式工具,#aggregates 是其在模板中的简写,专用于数值集合/数组的聚合计算) |
| sum | 总和(仅支持数值类型的数组/集合,如 Integer、Long、Double 等,非数值类型会抛出异常) |
| avg | 平均值(返回值为 Double 类型,同样仅支持数值类型,空集合/数组返回 null 而非 0) |
| array/collection | 数组/集合(collection 涵盖 List、Set 等所有 Java 集合类型) |
2. 关键逻辑解读(实战示例)
假设有用户列表 users,每个用户有 age 字段(数值类型),核心用法如下:
html
<!-- 计算用户年龄总和 -->
<div>年龄总和:<span th:text="${#aggregates.sum(users.age)}"></span></div>
<!-- 计算用户年龄平均值(保留2位小数) -->
<div>年龄平均值:<span th:text="${#numbers.formatDecimal(#aggregates.avg(users.age), 0, 2)}"></span></div>
<!-- 空集合场景:返回 null,页面显示空(而非报错) -->
<div th:with="emptyList=${T(java.util.Collections).emptyList()}">
空集合总和:<span th:text="${#aggregates.sum(emptyList)}"></span> <!-- 显示空 -->
</div>- 核心限制:
sum/avg仅能处理纯数值类型的数组/集合,若集合中包含 null 或非数值元素,会触发运行时异常; - 空值处理:空数组/集合返回 null,而非 0,模板中可结合
th:if做兜底处理(如<span th:text="${#aggregates.sum(array) ?: 0}">0</span>)。
3. 句式优化说明
- 原文简洁的注释直接译为对等的中文短句,避免冗余(如“Compute sum”译为“计算总和”而非“计算数组/集合的总和”,因参数已明确是 array/collection);
- 补充“数值类型”的隐含限制(注释未提及但开发中易踩坑),帮助新手规避异常;
- 保留
${#aggregates.xxx}表达式原样,符合 Thymeleaf 模板语法规范。
总结
#aggregates核心作用:在 Thymeleaf 模板中快速计算数值型数组/集合的总和与平均值;- 核心规则:
- 仅支持 Integer、Long、Double 等数值类型,非数值类型会报错;
- 空数组/集合返回 null(而非 0),需手动做兜底处理;
- 扩展用法:平均值可结合
#numbers.formatDecimal格式化小数位数,提升页面展示效果。
