✦ WELCOME TO MY WORLD ✦
✦ 2020-07-17 13:18 · 软技术

JSTL标签test条件判断时一定要注意数据类型,坑

现象

今天工作上的一个小问题给我折腾了好久。
原来的代码是这样的,方便理解用中文代替。

<c:if test="${库存数量} > ${库存不足阈值}">
    有货
</c:if>
<c:if test="${库存数量} <= ${库存不足阈值}">
    还剩${库存数量}件
</c:if>
库存数量库存不足阈值期望显示实际显示
101有货有货
102有货还剩2件
103有货还剩3件
109有货还剩9件
1010还剩10件还剩10件
1011还剩10件还剩10件

原因

JSTL标签test条件判断时默认是将比较双方作为字符串进行比较的。而字符串的比较和数值的比较结果是不一样的,比如用字符串比较时 "10" 是小于 "2" 的。

解决

将比较双方任意一方强制转成数值类型即可。比如将某一边跟1相乘一下。

<c:if test="${库存数量} > ${库存不足阈值}*1">
    有货
</c:if>
<c:if test="${库存数量} <= ${库存不足阈值}*1">
    还剩${库存数量}件
</c:if>
← 宝塔面板+Ngnix+PHP+Typocho出现404错误的解决办法 小白也能看懂的魔方还原教程,看这一篇就够了 →

▣ 评论告示牌

留下你的评论