论坛首页 Java企业应用论坛

EL表达式中empty的用法

浏览 22403 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-07  

     在做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,就是这个解释。

 

   看来还是只懂表面,不懂实质啊,也没办法,工作就一个劲完成目标,有时候的确不允许停下来。

   那就找一下折中的办法吧!!

 

 

  • 大小: 7.5 KB
   发表时间:2011-07-07  
这不是EL的用法问题,我感觉你的问题在于,是数据库里的SHIPPHONE字段为什么会存null字符串,可能保存有点问题,存null字符串没有实际意义。
0 请登录后投票
   发表时间:2011-07-08  
ruanee 写道
这不是EL的用法问题,我感觉你的问题在于,是数据库里的SHIPPHONE字段为什么会存null字符串,可能保存有点问题,存null字符串没有实际意义。

   恩,的确,你这一句话提醒了我,我重新看一下
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics