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表达 ...
随机推荐
- ubuntu设置终端命令历史记录
----------------------------------------------- HISTTIMEFORMAT='%F %T ' # 使用HISTTIMEFORMAT在历史中显示TIME ...
- 【笔记】LR录制方式和常用函数
本文为本人复习LR时,笔记整理.以备后续查阅. 注意:录制脚本时,选择不同的协议下录制时设置选项也是不相同的,我们这里介绍的是基于协议web(http/html)录制选项设置. 对于web(http/ ...
- LintCode_14 二分查找
题目 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1. 样例 在数组 [1 ...
- Leaflet地图框架使用手册
因为要做一个交通仿真项目,需要用到这个地图库,但是查询官方API麻烦,而且这个地图框架的API做的用起来确实太麻烦了..就从网上各种地方查找了一些,方便用, 大多都是复制,,见谅!! L.Map AP ...
- JMeter与LoadRunner的对比
1. 界面.安装.协议支持.函数库.成本.开源 2. 都可以实现分布式负载,相对来说LoadRunner更强大一些 3. 都支持在windows和linux环境的负载生成器.控制台方面,Jmeter跨 ...
- 找顺数【数位dp】
输出1到n中含有6的数的个数. 样例输入 100 样例输出 19 找规律感觉好难想(好像是什么100以内有19个,200以内有19*2个,600以内115个,700以内214个...,1000以内有2 ...
- hdu4178 乱搞
#include<stdio.h> #include<string.h> #define maxn 100 char name[maxn]; ]; int main() { , ...
- 在IDEA中实战Git 合并&提交&切换&创建分支
工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...
- 应用中弹出 WiFi 提示框的方法
如果 iOS 程序中用到了 WiFi,想有 WiFi 提示,只需要在 .plist 文件中加入如下 Key/Value 即可: 键名:ApplicationusesWi-Fi 值:YES 键名:SBU ...
- pictures