现象

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

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

原因

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

解决

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

<c:if test="${库存数量} > ${库存不足阈值}*1">
    有货
</c:if>
<c:if test="${库存数量} <= ${库存不足阈值}*1">
    还剩${库存数量}件
</c:if>

版权属于:芒果爱吃胡萝卜

本文链接:http://blog.mangolovecarrot.net/2020/07/17/150

转载时须注明出处及本声明

Last modification:July 17th, 2020 at 01:18 pm