EL表达式中empty的⽤法
在做jsp系统的时候经常会使⽤el标签,⽽empty是使⽤⽐较多的⼀个,这个标签也很⽅便。但是⼀直只是会⽤,从来都没有好好的去思考它的执⾏原理,所以在写这个之前碰到了⼀点错误,先来看看我的错误:
<c:if test="${not empty order.shipphone>
${order.shipphone}
</c:if>
这个语句想实现的效果很简单就是进⾏判断如果值不为null的话才会输出,但是这样却没有实现我要的效果,页⾯中输出了null,这就奇怪了既然${order.shipphone}已经为null了,这个判断执⾏的话应该是不允许它通过的,为什么⼜通过了。于是乎去查询了⼀下数据库,得到如下:
于是乎就更加迷惑了,对啊值是空的啊,最后实在没办法,只好求助java了,其中⼀个的话让我好好思考了⼀下:
是不是因为${order.shipphone}是字符串的“null”
最后再去看了⼀下empty的⽤法:
<c:if test="${! empty key}">${key}</c:if>
<c:if test="${empty key}">所有</c:if>
当key不为空时输出key的值。当key为空时,输出“所有”
规则:
1若key为null时,返回true
2若key为空String时,返回true
3若key为空Array时,返回true
4若key为空Map时,返回true
5若key为空Collection时,返回true
6否则,返回false
从上⾯可以看出,如果是字符串null的话,这个判断当然是true,也就是说order中的shipphone本⾝并不为null,它有值,并且值为null,就是这个解释。
el表达式获取值
看来还是只懂表⾯,不懂实质啊,也没办法,⼯作就⼀个劲完成⽬标,有时候的确不允许停下来。
那就⼀下折中的办法吧!!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。