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”字符串……尴尬,被这个小细节浪费了些许时间。
EL表达式中的empty和null的更多相关文章
- EL表达式中的empty运算符
- EL表达式中引用隐式变量
除了在jsp中9大隐式变量(在前面文章也叫预定义变量)在转化成为servlet后_jspService中可以看到: public void _jspService(final javax.servle ...
- 在jsp中怎么使用Cookie?el表达式中获取cookie的问题
初学jsp,不清楚cookie的使用方法,希望高手指点一下! 一般来说有两种办法,在JSP中使用Java的嵌入脚本. 例如: 写入Cookie <html> <head>. ...
- EL表达式中fn函数 (转载)
JSTL 使用表达式来简化页面的代码,这对一些标准的方法,例如bean的getter/setter方法,请求参数或者context以及 session中的数据的访问非常方便,但是我们在实际应用中经常需 ...
- java、el表达式中保留小数的方法
Java中: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; p ...
- EL表达式中如何截取字符串
EL表达式中如何截取字符串 可以截取,用fn函数:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/ ...
- 关于EL表达式中requestScope和param区别
今天演示EL表达式的时候发现自己jsp的基础实在是薄弱,在这个很简单的问题上迷惑了很久. 首先在看遇到的问题: 在浏览器地址输入,表示传入一个参数test,值为123 http://localhost ...
- EL表达式中的11个隐式对象
EL表达式中定义了11个隐式对象,使用这些隐式对象可以很方便地读取到Cookie.HTTP请求消息头字段.请求参数.Web应用程序中的初始化参数的信息,EL表达式中的隐式对象具体如下: 隐式对象 作用 ...
- JS中如何使用EL表达式中的对象
JS中如何使用EL表达式中的对象 2017年09月25日 15:33:09 lhpnba 阅读数:4859 1.js中使用el表达式要加双引号或单引号:'${list}' 2.js变量获取el表达 ...
随机推荐
- LintCode刷题笔记-- BackpackIV
标签: 动态规划 描述: Given an integer array nums with all positive numbers and no duplicates, find the numbe ...
- ecshop二次开发之百度地图
案例效果展示: 代码实现: 1.在ecshop后台找到文章管理->文章分类->添加文章分类,添加一个顶级分类,叫做"合作单位",并且让其显示在导航栏.如下图: 1.在e ...
- js自定义滚动条
今天听到别人说自定义滚动条,所以就在吃饭的时间写了个 html部分 <div class="out" id="out"> <div class ...
- scala实现定时任务的方法
/** * ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式. * 它有以下好处: ...
- 盘点Apache毕业的11个顶级项目
自1999年成立至今,Apache 软件基金会已成功建立起自己强大的生态圈.其社区涌现了非常多优秀的开源项目,同时有越来越多国内外项目走向这个国际开源社区进行孵化.据悉,目前所有的 Apache 项目 ...
- oracle-ORA-01650错误
Unable to extend rollback segment 原因:没有足够的撤销空间用来处理所有活动事务
- app被Rejected 的各种原因翻译。这个绝对有用
1. Terms and conditions(法律与条款) 1.1 As a developer of applications for the App Store you are bound b ...
- pycharm 永久注册
pycharm 使用又到期了,找到了破解版亲测(到期日期2099/12/31),绝对简单好用,直接使用步骤: 一,下载pycharm(windows版): https://www.jetbrains ...
- UDP传输对象--JavaSE考试题
Server.java package com.sxt.udp.object; import java.io.ByteArrayInputStream; import java.io.ObjectIn ...
- 在oracle中操作数据——使用特点的格式插入日期 sql函数的使用——日期函数
日期函数用于处理date类型的数据,默认情况下的日期格式是dd-mm-yy即12-7月-78 (1)sysdate:该函数返回系统时间 (2)add_months(d,n) (3)last_day(d ...