深色模式
4.10 比较器与相等判断
表达式中的值可以通过 >、<、>=、<= 符号进行大小比较,也可通过 ==、!= 运算符判断相等/不相等。需要注意的是:XML 规范规定属性值中不能直接使用 < 和 >,需替换为实体引用 <(对应 <)和 >(对应 >)。
html
<!-- 判断数值大于 1(XML 中用 > 替代 >) -->
<div th:if="${prodStat.count} > 1">
数量大于 1 时显示
</div>
<!-- 相等判断 + 三元表达式(判断执行模式) -->
<span th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')">
Execution mode is Development
</span>为了避免 XML 实体引用的繁琐,Thymeleaf 为这些运算符提供了文本别名,是日常开发的首选方式:
| 运算符 | 含义 | 文本别名 | 示例(等价写法) |
|---|---|---|---|
> | 大于 | gt | ${num > 10} ≡ ${num gt 10} |
< | 小于 | lt | ${num < 10} ≡ ${num lt 10} |
>= | 大于等于 | ge | ${num >= 10} ≡ ${num ge 10} |
<= | 小于等于 | le | ${num <= 10} ≡ ${num le 10} |
== | 等于 | eq | ${execMode == 'dev'} ≡ ${execMode eq 'dev'} |
!= | 不等于 | neq/ne | ${execMode != 'dev'} ≡ ${execMode ne 'dev'} |
! | 非(取反) | not | ${!isAdmin} ≡ ${not isAdmin} |
别名用法示例
html
<!-- 用 gt 替代 >,无需写 >,更简洁 -->
<div th:if="${prodStat.count} gt 1">
数量大于 1 时显示
</div>
<!-- 用 eq 替代 ==,结合三元表达式 -->
<span th:text="'Execution mode is ' + (${execMode} eq 'dev' ? 'Development' : 'Production')">
Execution mode is Development
</span>
<!-- 用 ne 替代 !=,判断不等于 -->
<div th:if="${user.status} ne 'DISABLED'">
非禁用用户可见
</div>关键注意事项
XML 兼容性优先: 若模板文件是
.xml或严格的 XHTML 格式,必须避免直接使用</>,优先用lt/gt别名;.html模板虽可直接用</>,但推荐统一用别名,提升代码兼容性和可读性。相等判断的类型一致性:
==/eq会严格判断类型(如${10 == '10'}结果为false),若需弱类型比较,需手动转换类型:html<!-- 弱类型比较:先转字符串再判断 --> <div th:if="${#strings.toString(num) eq '10'}">...</div>null 值的相等判断: 判断变量是否为
null时,用== null/eq null均可,推荐用别名更统一:html<div th:if="${user.name} eq null">姓名未设置</div>
总结
- Thymeleaf 支持
>/</>=/<=(大小比较)和==/!=(相等判断),XML 中需替换</>为</>; - 推荐使用文本别名(
gt/lt/ge/le/eq/ne)替代运算符,避免 XML 兼容问题,代码更简洁; - 相等判断是严格类型比较,null 值判断可直接用
eq null/ne null。
