其他分享
首页 > 其他分享> > 巨坑BUG!!! thymeleaf的三元运算,或与非 运算,大于小于运算

巨坑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