深色模式
布尔值工具(Booleans)
#bools 是 Thymeleaf 专为布尔值评估设计的工具对象,提供了空值安全、与 th:if 标签逻辑一致的布尔判断方法,同时支持数组/列表/集合的批量布尔运算(底层对应 org.thymeleaf.expression.Bools 类,可参考其 JavaDoc 获取完整 API)。
java
/*
* ======================================================================
* 请查阅 org.thymeleaf.expression.Bools 类的 Javadoc API 文档
* ======================================================================
*/
/*
* 以与 th:if 标签相同的规则评估一个条件(后续可参考条件评估章节)。
* 该方法同样适用于数组、列表(List)或集合(Set)类型的参数。
*/
${#bools.isTrue(obj)}
${#bools.arrayIsTrue(objArray)}
${#bools.listIsTrue(objList)}
${#bools.setIsTrue(objSet)}
/*
* 对条件进行取反评估。
* 该方法同样适用于数组、列表(List)或集合(Set)类型的参数。
*/
${#bools.isFalse(cond)}
${#bools.arrayIsFalse(condArray)}
${#bools.listIsFalse(condList)}
${#bools.setIsFalse(condSet)}
/*
* 评估条件并执行“与(AND)”运算。
* 接收数组、列表(List)或集合(Set)类型的参数。
*/
${#bools.arrayAnd(condArray)}
${#bools.listAnd(condList)}
${#bools.setAnd(condSet)}
/*
* 评估条件并执行“或(OR)”运算。
* 接收数组、列表(List)或集合(Set)类型的参数。
*/
${#bools.arrayOr(condArray)}
${#bools.listOr(condList)}
${#bools.setOr(condSet)}补充说明(贴合 Thymeleaf 布尔运算技术语境)
1. 核心术语解析
| 英文术语 | 译法/说明 |
|---|---|
| Bools | 布尔工具类(Thymeleaf 表达式工具,#bools 是其简写,专用于布尔值/条件的评估与运算) |
| evaluate a condition | 评估条件(按 Thymeleaf 标准规则判断“条件是否为真”,如 0/null/空集合判为 false) |
| th:if tag rules | th:if 标签规则(核心逻辑:非 null/非 false/非 0/非空集合/非空字符串判为 true) |
| negation | 取反(将“真”转为“假”,“假”转为“真”,等价于 ! 运算符) |
| AND/OR operator | 与/或运算符(数组/集合级别的批量运算:AND 要求所有元素为真才返回真;OR 只要有一个元素为真就返回真) |
2. 关键逻辑解读(实战示例)
Thymeleaf 的布尔评估规则与 Java 原生布尔判断不同,核心是“贴近前端场景”,示例如下:
html
<!-- 1. 基础真假判断(遵循 th:if 规则) -->
<div th:with="
num0=${0}, num1=${1},
emptyList=${T(java.util.Collections).emptyList()},
nonEmptyList=${#lists.toList(new Integer[]{1})}
">
<!-- isTrue:0/空集合/空字符串/null 判为 false,其余为 true -->
<div>#bools.isTrue(num0): <span th:text="${#bools.isTrue(num0)}"></span></div> <!-- false -->
<div>#bools.isTrue(num1): <span th:text="${#bools.isTrue(num1)}"></span></div> <!-- true -->
<div>#bools.isTrue(emptyList): <span th:text="${#bools.isTrue(emptyList)}"></span></div> <!-- false -->
<!-- isFalse:对 isTrue 结果取反 -->
<div>#bools.isFalse(num0): <span th:text="${#bools.isFalse(num0)}"></span></div> <!-- true -->
<!-- 2. 数组/集合的 AND 运算(所有元素为真才返回真) -->
<div th:with="boolArray=${#arrays.toArray(new Boolean[]{true, false, true})}">
#bools.arrayAnd(boolArray): <span th:text="${#bools.arrayAnd(boolArray)}"></span> <!-- false -->
</div>
<!-- 3. 数组/集合的 OR 运算(任一元素为真就返回真) -->
<div th:with="boolList=${#lists.toList(new Boolean[]{false, false, true})}">
#bools.listOr(boolList): <span th:text="${#bools.listOr(boolList)}"></span> <!-- true -->
</div>
</div>- 核心特性:
isTrue/isFalse对单个值的判断规则与th:if完全一致(比如空字符串""判为 false,非空字符串"false"判为 true);arrayAnd/listAnd/setAnd:批量判断时,所有元素为真才返回真,只要有一个假则返回假;arrayOr/listOr/setOr:批量判断时,只要有一个元素为真就返回真,所有元素为假才返回假。
3. 句式优化说明
- 将“in the same way that it would be evaluated in a th:if tag”译为“以与 th:if 标签相同的规则评估”,避免直译“以在 th:if 标签中被评估的相同方式”的生硬感;
- 补充“(List)”“(Set)”注释明确列表/集合类型,贴合新手对 Java 集合的认知;
- 用“执行‘与(AND)’运算”“执行‘或(OR)’运算”替代直译“应用与/或运算符”,更符合“布尔运算”的技术表达习惯;
- 保留
${#bools.xxx}表达式原样,注释简洁且突出“th:if 规则”“批量运算”等核心差异点。
总结
#bools核心作用:在 Thymeleaf 模板中按th:if规则评估布尔条件,支持单个值判断、取反,以及数组/集合的批量 AND/OR 运算;- 核心用法分类:
- 基础判断:
isTrue(obj)(按 th:if 规则判真)、isFalse(cond)(对 isTrue 取反); - 批量 AND 运算:
arrayAnd/listAnd/setAnd(所有元素为真才返回真); - 批量 OR 运算:
arrayOr/listOr/setOr(任一元素为真就返回真);
- 基础判断:
- 关键注意点:布尔评估规则遵循
th:if逻辑(非 null/非 0/非空集合等判为真),与 Java 原生布尔判断不同。
