Skip to content

聚合工具(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 模板语法规范。

总结

  1. #aggregates 核心作用:在 Thymeleaf 模板中快速计算数值型数组/集合的总和平均值
  2. 核心规则:
    • 仅支持 Integer、Long、Double 等数值类型,非数值类型会报错;
    • 空数组/集合返回 null(而非 0),需手动做兜底处理;
  3. 扩展用法:平均值可结合 #numbers.formatDecimal 格式化小数位数,提升页面展示效果。