巨坑BUG!!! thymeleaf的三元运算,或与非 运算,大于小于运算
作者:互联网
最近在学习springboot,学到前端部分的thymeleaf时卡住了,主要是三元运算上面;过程是这样的:我把原来项目改造成springboot项目,在前端部分使用三元运算进行分页操作,遇到了大坑;改了老半天;
BUG1:thymeleaf的三元运算比较数字时要使用单引号 ‘’ 将数字包裹器来
<a th:href="'/book/list?pageOn='+${pageOn < '1' ? '1' : (pageOn - 1) + '' }" >上一页</a>
错误提示:
Exception evaluating SpringEL expression: "pageOn < 1 ? '1' : (pageOn - 1) + '' " (template: "index" - line 51, col 8)
刚开始我以为是逻辑有问题,但是我想了半天也没看出错误来哦,然后去网上翻了半天关于thyme leaf的三元运算,无果;最后自己尝试了半天才把问题解决:
将三元运算的数字用单引号‘’包起来:
将代码改成这样后问题解决了:
<a th:href="'/book/list?pageOn='+${pageOn < '1' ? '1' : (pageOn - 1) + '' }" >上一页</a>
BUG2:thymeleaf的三元运算,变量与数字相加时最好使用小括号() 包裹起来
先放上问题代码:
<a th:href="'/book/list?pageOn='+ ${pageOn} == ${endPage} ? ${endPage} : ${pageOn}+1">下一页</a>
这样子,编译不会报错,但是当我点击“下一页”的时候,出现了一堆乱七八糟的数字;
解决方案: 在需要做+ - * /加减乘除的代码上加小括号()
将代码改为这样后问题解决了:
<a th:href="'/book/list?pageOn='+ (${pageOn} == ${endPage} ? ${endPage} : (${pageOn}+1))">下一页</a>
可以看见,我不仅把数字运算的代码用()括起来,还把整个三元运算也用()括起来了,因为我再三元的外面是字符串拼接;
BUG3:thymeleaf的三元运算,最好使用外部三元运算
例如我希望:当前页正好为最后一页时,给最后一页加上class="current"样式
失败代码:
<a th:href="${end }" class=""th:classappend="${pageOn == endPage ? 'current' : '' ">尾页</a>
这样写也不会报错,但是不能添加上class属性
成功代码:
<a th:href="${end }" class=""th:classappend="${pageOn} == ${endPage} ? 'current' : '' ">尾页</a>
下面附上一些thymeleaf常用的运算符:
文本操作
+ 字符串连接
|The name is ${name}| 字符串连接
· 算术运算
+ , - , * , / , % 二元运算符
- 负号(一元运算符)
· 布尔操作
and,or 二元操作符
!,not 非(一元操作符)
· 关系操作符
> , < , >= , <= (gt , lt , ge , le)
== , != (eq, ne)
赠人玫瑰,手有余香;
点个赞再走呗~~~
标签:运算,代码,巨坑,运算符,thymeleaf,一页,三元 来源: https://blog.csdn.net/White_i/article/details/112531229