深色模式
对象工具
#objects:是用于处理通用对象的工具方法集合:
java
/*
* ======================================================================
* 请查阅 org.thymeleaf.expression.Objects 类的 Javadoc API 文档
* ======================================================================
*/
/*
* 若对象不为 null,则返回该对象;若为 null,则返回指定的默认值。
* 此方法同样适用于数组、列表(List)或集合(Set)类型的参数。
*/
${#objects.nullSafe(obj,default)}
${#objects.arrayNullSafe(objArray,default)}
${#objects.listNullSafe(objList,default)}
${#objects.setNullSafe(objSet,default)}补充说明(贴合 Thymeleaf 空值处理技术语境)
1. 核心术语解析
| 英文术语 | 译法/说明 |
|---|---|
| Objects | 对象工具类(Thymeleaf 表达式工具,#objects 是其简写,核心用于空值安全处理) |
| nullSafe | 空值安全(核心逻辑:避免 null 引发的空指针异常,等价于 Java 中的 obj != null ? obj : default) |
| default | 默认值(当目标对象为 null 时返回的值,类型需与目标对象兼容) |
2. 关键逻辑解读(实战示例)
#objects.nullSafe 是 Thymeleaf 模板中处理 null 值的核心工具,能有效避免页面渲染时因 null 导致的异常,示例如下:
html
<!-- 1. 单个对象的空值安全处理 -->
<div th:with="
userName=${null}, // 模拟后端返回 null 的场景
defaultName='匿名用户'
">
用户名:<span th:text="${#objects.nullSafe(userName, defaultName)}"></span> <!-- 输出 匿名用户 -->
</div>
<!-- 2. 集合/数组的空值安全处理 -->
<div th:with="
nullList=${null}, // 模拟 null 集合
emptyList=${T(java.util.Collections).emptyList()},
defaultList=${#lists.toList(new String[]{'默认元素'})}
">
<!-- nullList 为 null → 返回默认集合 -->
nullList 处理结果:<span th:text="${#objects.listNullSafe(nullList, defaultList)}"></span> <!-- [默认元素] -->
<!-- emptyList 非 null(只是空集合)→ 返回自身 -->
emptyList 处理结果:<span th:text="${#objects.listNullSafe(emptyList, defaultList)}"></span> <!-- [] -->
</div>
<!-- 3. 类型兼容注意(默认值类型需与目标对象一致) -->
<div th:with="
age=${null},
defaultAge=${0}
">
年龄:<span th:text="${#objects.nullSafe(age, defaultAge)}"></span> <!-- 输出 0 -->
</div>- 核心特性:
nullSafe仅判断“是否为 null”,空集合/空数组/空字符串不会触发默认值(比如空 List 会直接返回自身,而非默认值);- 数组/集合专用的
arrayNullSafe/listNullSafe/setNullSafe逻辑与nullSafe完全一致,只是语义上更贴合对应类型; - 默认值类型需与目标对象兼容(如 Integer 类型的 null 值,默认值不能是字符串,否则会触发类型转换异常)。
3. 句式优化说明
- 将“Return obj if it is not null, and default otherwise”译为“若对象不为 null,则返回该对象;若为 null,则返回指定的默认值”,用分号拆分条件逻辑,符合中文“条件+结果”的表达习惯;
- 补充“(类型需与目标对象兼容)”的隐含注意点,避免新手因类型不匹配踩坑;
- 保留
${#objects.xxx}表达式原样,注释简洁且突出“仅判断 null、空集合不触发默认值”的核心规则。
总结
#objects核心作用:在 Thymeleaf 模板中做空值安全处理,避免 null 导致的渲染异常,等价于 Java 三元表达式obj != null ? obj : default;- 核心用法:
nullSafe(obj, default)(通用)、arrayNullSafe/listNullSafe/setNullSafe(数组/集合专用,逻辑一致); - 关键注意点:仅当对象为
null时返回默认值,空集合/空数组/空字符串不会触发默认值,且默认值类型需与目标对象兼容。
