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>

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/184381.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Maven 简单配置阿里云镜像

配置步骤&#xff1a; 1、找到 maven 的安装目录&#xff0c;修改settings.xml 2、在文件中找到<mirrors>标签&#xff0c;然后再标签中添加阿里云配置即可 <mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共…

Echarts+Vue+dataV 首页大屏静态示例Demo

效果图: <template><div class="content bg"><!-- 全屏容器 --><!-- 第一行 --><div class="module-box"><div style="flex: 0 1 30%"><dv-decoration-10 style="height: 5px" /></div…

2016年2月17日 Go生态洞察:Go 1.6版本发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

简述马尔可夫链【通俗易懂】

前言 马尔可夫链&#xff08;Markov Chain&#xff09;可以说是机器学习和人工智能的基石&#xff0c;在强化学习、自然语言处理、金融领域、天气预测、语音识别方面都有着极其广泛的应用。 The future is independent of the past given the present 未来独立于过去&#xff…

批量将本地N个英文Html文档进行中文翻译-操作篇

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

GPT、GPT-2、GPT-3论文精读笔记

视频&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3 论文精读【论文精读】_哔哩哔哩_bilibili MAE论文&#xff1a;把bert用回计算机视觉领域 CLIP论文&#xff1a;打通文本和图像 GPT 论文&#xff1a;Improving Language Understanding by Generative Pre-Training …

Android开发从0开始(Activity篇)

Activity的生命周期 对应解释&#xff1a; startActivity(new Intent(源页面.this,目标页面.class)) 结束当前活动页面finish(); Activity的启动模式 App先后打开两个活动&#xff0c;此时活动会放入栈内。 &#xff08;Android:launchMode”standard”&#xff09;默认 &am…

全自动洗衣机什么牌子好?内衣洗衣机推荐

现在洗内衣内裤也是一件较麻烦的事情了&#xff0c;在清洗过程中还要用热水杀菌&#xff0c;还要确保洗衣液是否有冲洗干净&#xff0c;还要防止细菌的滋生等等&#xff0c;所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的&#xff0c;专门的内衣洗衣机可以最大程度减少…

实时语音克隆:5 秒内生成任意文本的语音 | 开源日报 No.84

CorentinJ/Real-Time-Voice-Cloning Stars: 43.3k License: NOASSERTION 这个开源项目是一个实时语音克隆工具&#xff0c;可以在5秒内复制一种声音&#xff0c;并生成任意文本的语音。 该项目的主要功能包括&#xff1a; 从几秒钟的录音中创建声纹模型根据给定文本使用参考…

聚类笔记/sklearn笔记:Affinity Propagation亲和力传播

1 算法原理 1.1 基本思想 将全部数据点都当作潜在的聚类中心(称之为 exemplar )然后数据点两两之间连线构成一个网络( 相似度矩阵 )再通过网络中各条边的消息( responsibility 和 availability )传递计算出各样本的聚类中心。 1.2 主要概念 Examplar聚类中心similarity S(i…

GitHub桌面版

GitHub桌面版 一、GitHub 桌面版二、clone 仓库三、更新仓库 一、GitHub 桌面版 二、clone 仓库 三、更新仓库

GDPU 数据结构 天码行空11

文章目录 数据结构实验十一 图的创建与存储一、实验目的二、实验内容三、【实验源代码】&#x1f37b; CPP版&#x1f37b; c 语言版&#x1f37b; java版 四、【实验结果】五、【实验总结】 数据结构实验十一 图的创建与存储 一、实验目的 1、 理解图的存储结构与基本操作&a…

mac电脑系统活动监控:iStat Menus 中文 for Mac

iStat Menus是一款Mac操作系统上的系统监控工具&#xff0c;它提供了实时的系统状态和性能数据&#xff0c;让用户可以方便地监控和管理自己的电脑。iStat Menus以菜单栏图标的形式显示各种系统指标&#xff0c;用户可以轻松访问和查看这些信息。 以下是iStat Menus软件的一些…

基于SSM安全生产培训管理平台设计与实现 毕业设计源码26918

赠送源码-毕业设计&#xff1a;SSM 安全生产培训平台https://www.bilibili.com/video/BV1gH4y1z7c6/?vd_source72970c26ba7734ebd1a34aa537ef5301 目录 摘 要 Abstract 第1章 前 言 1.1 研究背景 1.2 研究现状 1.3 系统开发目标 第2章 系统开发环境 2.1 JAVA简介…

VOC数据集转换为COCO数据集

VOC数据集格式 get_list.py import os import random import shutil# 设置随机种子 random.seed(1000)# 判断Annotations和JpegImages是否对应 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

服务号升级成订阅号容易弄吗

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;一、文章推送的篇数不同服务号在文章的推送篇数上是有所限制的&#xff08;每月推4次&#xff09;订阅号则每天可推送一篇文章。二、定义不同服务号主要是为关注用户提供服务使用的&#xff1b;订阅…

千兆光模块和万兆光模块的发展趋势

千兆光模块和万兆光模块是一种高速光电子器件&#xff0c;以其高速传输、长距离传输和高可靠性而广受关注。光模块是光学通讯系统中极为重要的组成部分之一。不同类型的光模块由于其不同的特性&#xff0c;可以适用于不同的应用场景。下面我们将着重介绍千兆光模块和万兆光模块…

数据结构与算法之美学习笔记:25 | 红黑树(上):为什么工程中都用红黑树这种二叉树?

目录 前言什么是“平衡二叉查找树”&#xff1f;如何定义一棵“红黑树”&#xff1f;为什么说红黑树是“近似平衡”的&#xff1f;解答开篇 前言 本节课程思维导图&#xff1a; 二叉查找树是最常用的一种二叉树&#xff0c;它支持快速插入、删除、查找操作&#xff0c;各个操作…

了解冶金行业MES系统的重要性与优势

冶金行业生产工艺极为复杂&#xff0c;冶金行业生产的产品种类多而繁复&#xff0c;并且每种企业生产的产品差异性极大&#xff0c;加上该行业生产需要各种大型生产设备&#xff0c;导致其工艺流程繁琐复杂&#xff0c;也因此在其生产过程中存在许多不安全的因素&#xff0c;若…

uniapp打包的ipa上架到appstore的傻瓜式教程

​ 转载&#xff1a;uniapp打包的ipa上架到appstore的傻瓜式教程 uniapp打包 在HBuilder X编辑器中打开需要打包的项目&#xff0c;然后点击上面菜单栏中 发行 > 原生App-云打包&#xff0c;对以下弹出的弹窗进行内容填写 ​ 填写完成以后&#xff0c;点击打包操作 ​ ​ …