zoukankan      html  css  js  c++  java
  • EL表达式中的empty和null

    EL表达式中的empty和null

    先说一下EL表达式中的null和empty区别,然后再说说最近在项目中出现的一个有趣的问题。
    EL中的null和empty都可用来判断值是否为空,但两者存在略微的区别,
    先用网上的一个小例子来演示下:


    test.jsp代码:

    <%@page pageEncoding="utf-8" %>
    name值为:${param.name }
    empty处理结果:${empty param.name }
    ==null处理结果:${param.name == null }

    第一种情况:地址栏输入:http://127.0.0.1:8080/test.jsp
    显示:
    name值为:
    empty处理结果:true
    ==null处理结果:true

    第二种情况:地址栏输入:http://127.0.0.1:8080/test.jsp?name=
    显示:
    name值为:
    empty处理结果:true
    ==null处理结果:false
    分析:第一种情况的name=null,第二种情况的name=“”
    empty表达式对于name=null和name=”“的识别是一样的,都返回true;
    ==null表达式对于name=null判断为true,而对于name=”“判断则是false;
    如果非要使用==null表达式判断是否为空,需要将表达式写成如下:

    ${param.name == null && 
    param.name!=""}

    最近在做的项目中需要在页面上解析从后台传来的json数据,我把代码简化,其中有一段代码是这样的,

    <c:if test="${not empty product.isExport}>isExportde 值:${product.isExport}</c:if>  

    代码想实现的目的当isExport不为空时,输出isExport的值,当为空时则什么都不输出;
    结果却匪夷所思,页面上竟然输出了“isExportde 值:null”。
    既然页面上有信息输出,则代表isExport在判断时被识别为不为空,但是输出的isExport值怎么又是null?
    那么假设isExport为空,这时候页面是不应该输出任何信息的。两种情况都说不通。
    后来揣测是json字符串出错了,后台查看了json后,许久后才看出端倪来,这串json是通过httpClient从其他系统拿过来的数据,中间也不知道经过了什么,isExport变成了“null”,是“null”而不是null,也就是isExport的值是“null”字符串……尴尬,被这个小细节浪费了些许时间。

  • 相关阅读:
    unbuntu系统下在文件中按上下左右出现错误码
    构建之法阅读笔记
    cloudera卸载
    第二阶段团队站立会议04
    第二阶段团队站立会议03
    第二阶段团队站立会议02
    第二阶段团队站立会议01
    团队测试
    cnblogs.com的用户体验
    对于每个小组的意见
  • 原文地址:https://www.cnblogs.com/jpfss/p/8989407.html
Copyright © 2011-2022 走看看