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”字符串……尴尬,被这个小细节浪费了些许时间。

  • 相关阅读:
    构建之法作业要求 20160922
    构建之法作业截止 20160908
    作业成绩 20160901
    动态范围理解
    解像力理解以及单位换算;
    QT:基本知识(一);
    qml: 截图(单窗口);
    (转载)python: getopt的使用;
    python: with的使用;
    qml: 自定义输入框
  • 原文地址:https://www.cnblogs.com/jpfss/p/8989407.html
Copyright © 2011-2022 走看看