Thymeleaf中如何正确使用OR逻辑运算符编写条件判断?
解决Thymeleaf中OR逻辑运算符的条件判断问题
嘿,我一眼就发现你的问题啦——不是Thymeleaf的OR语法写错了,而是你的逻辑条件本身有问题!
先看你写的条件:
<div th:if="${(fingerprints.totalPages != 0) or (fingerprints.totalPages != 1)}">
这个条件永远都会成立,不管totalPages的值是多少:
- 如果
totalPages是0:第二个条件!=1为真,整个OR结果为真 - 如果
totalPages是1:第一个条件!=0为真,整个OR结果为真 - 如果是其他数字:两个条件都为真,结果还是真
所以这个div不管什么情况都会显示,自然看起来像是“无效”。
正确的语法与逻辑调整
Thymeleaf里的OR运算符本身支持两种写法:or或者||,语法是没问题的,关键是要根据你的实际需求调整逻辑:
场景1:你想在totalPages既不是0也不是1的时候显示div
这时候应该用AND运算符,而不是OR:
<div th:if="${fingerprints.totalPages != 0 and fingerprints.totalPages != 1}"> <!-- 或者用&&写法 --> <div th:if="${fingerprints.totalPages != 0 && fingerprints.totalPages != 1}">
场景2:你想在totalPages是0或者是1的时候显示div
那OR的条件要写成等于判断:
<div th:if="${fingerprints.totalPages == 0 or fingerprints.totalPages == 1}"> <!-- 或者用||写法 --> <div th:if="${fingerprints.totalPages == 0 || fingerprints.totalPages == 1}">
场景3:确实需要OR的非等于场景(很少见)
比如你想判断totalPages不等于0 或者 不等于某个其他值(比如5),那直接用or就可以,只要逻辑合理:
<div th:if="${fingerprints.totalPages != 0 or fingerprints.totalPages != 5}">
总之,先理清你真正的业务逻辑,再对应调整条件,Thymeleaf的逻辑运算符语法本身是很直观的~
内容的提问来源于stack exchange,提问作者abc
相关产品推荐
相关产品推荐

