当前位置: 首页 > article >正文

JSP EL表达式之 empty

好 本文我们还是继续说EL表达式
我们来讲一个非空判断的好手 empty
我们直接编写代码如下

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%request.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<%
    request.setAttribute("str1","abc");
    request.setAttribute("str2","");
    request.setAttribute("str3",null);
%>
<p>${empty str1}</p>
<p>${empty str2}</p>
<p>${empty str3}</p>
</body>
</html>

这里 我们分别定义了 三个字符串值 str1是一个正常的字符串内容 str2 是个空字符 str3 直接是一个空对象null
然后我们对用EL输出了他们empty判断后的结果

我们运行项目
很明显 他都帮我们转换成 布尔值的类型了 第一个不为空 所以是 否
后面两个 一个空字符串 一个null 都成立 true 条件真
在这里插入图片描述
从这个结果 我们可以简单总结到 数据为空 返回 true 数据不为空 返回false

那么 除了字符串 我们还会有集合
先是 list 参考代码如下

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%request.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<%
    List Iist1 = new ArrayList<>();
    List Iist2 = new ArrayList<>();
    Iist2.add("aaa");
    request.setAttribute("Iist1",Iist1);
    request.setAttribute("Iist2",Iist2);
%>
<p>${empty Iist1}</p>
<p>${empty Iist2}</p>
<p>${empty Iist3}</p>
</body>
</html>

这边 我们作用域中 定义了两个 list集合 第一个 Iist1 我们声明了 但是里面没有加数据
然后第二个 Iist2 我们声明之后加了一条数据进去
然后 这里 我们用 empty 判断他们 然后 还多加了一个list3的判断 这个是没有定义的 在域中是找不到的
然后 我们运行结果如下

首先 没有数据的 list list1 是一个 true
然后 第二条里面有一条数据的 list2 返回 false
然后第三个 不存在的域值 返回了true 也就知道了 域中找不到的值 也视为空
在这里插入图片描述
然后是我们的map
编写代码如下

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%request.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<%
    Map map1 = new HashMap();
    Map map2 = new HashMap();
    map2.put("aaa","111");
    request.setAttribute("map1",map1);
    request.setAttribute("map2",map2);
%>
<p>${empty map1}</p>
<p>${empty map2}</p>
</body>
</html>

这里 我们定义了 map1 声明为一个map集合 然后就不操作了
然后定义了 map2 加入了一个 键 aaa 对应值为 111
运行代码
在这里插入图片描述
这里 还是 因为第一个map1内没有数据 是个true
而 后面的 map2 是有一条数据的 返回了 false

然后是我们的 java bean
这边我们可以这样写代码

<%@ page import="com.example.dom.attribute.users" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%request.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<%
    users user1 = new users();
    users user2 = new users();
    user2.setId(1);
    request.setAttribute("user1",user1);
    request.setAttribute("user2",user2);
%>
<p>${empty user1}</p>
<p>${empty user2}</p>
</body>
</html>

这里 我们用上文中写的 users 的bean 声明了两个对象 user1 和 user2 然后 给user2的id赋了个值

然后 我们运行界面
在这里插入图片描述
有点出乎意料 因为成为了 双false 因为 你直接放对象上去的话 他会认为这是个对象 是有对象的

所以 他们都是非空

那么empty是判断 数据是不是为空的 我们判断非空 就可以这样写

<%@ page import="com.example.dom.attribute.users" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%request.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<%
    request.setAttribute("str1","abc");
    request.setAttribute("str2","");
    request.setAttribute("str3",null);
%>
<p>${!empty str1}</p>
<p>${!empty str2}</p>
<p>${!empty str3}</p>

</body>
</html>

在这里插入图片描述
前面加一个感叹号的意思就是取反


http://www.kler.cn/a/145776.html

相关文章:

  • 【Oracle数据库】创建表的同义词示例
  • 大数据与AI驱动的商业查询平台:企业市场拓展的变革引擎​
  • (三)线性代数之二阶和三阶行列式详解
  • 【附源码】108个Python实战项目,练完能力飙升
  • 国产编辑器EverEdit - 列编辑模式
  • mysql之表的外键约束
  • CANdelaStudio 使用教程5 编辑DID
  • 那些年,关于CKACKS认证的那些事儿?
  • 【用unity实现100个游戏之16】Unity中程序化生成的2D地牢5(附项目源码,完结)
  • 【知网稳定检索】第九届社会科学与经济发展国际学术会议 (ICSSED 2024)
  • 每日一题--相交链表
  • 【云原生】什么是 Kubernetes ?
  • 2023年初中生古诗文大会复选最后6天备考策略和更新的在线模拟题
  • 思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞
  • 【深度学习】DAMO-YOLO,阿里,701类通用检测模型,目标检测
  • Co-DETR:DETRs与协同混合分配训练代码学习笔记
  • 汇编-CALL和RET指令
  • C++初识类和对象
  • 【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
  • Navicat 技术指引 | GaussDB服务器对象的创建/设计(编辑)
  • 【咕咕送书 | 第六期】深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!
  • 大模型能否生成搜索引擎的未来?
  • C++中constexpr的作用
  • 开源WIFI继电器之源代码
  • video标签在h5中被劫持问题
  • 开源vs闭源,处在大模型洪流中,向何处去?