SpringMVC学习之JSTL条件行为和遍历行为详解
作者:Pruett 发布时间:2021-08-19 08:56:09
JSTL条件行为和遍历行为
JSTL的条件行为标签有四个:if,choose,when,otherwise标签
1、if标签
是对某一个条件进行测试,结果为true就执行它的body content。测试结果保存在Boolean对象中,并创建有届变量来保存这个Boolean对象。利用var和scope属性分别定义有界变量的名称和范围。
两种形式:
1) 没有body content
<c:if test="condition" var="varName" [scope="page|request|session|application"] />
此情况的var 一般是通过其他标签在同一个JSP的后续阶段再进行测试
2)
<c:if test="conditin" [var="varName"] [scope="page|request|session|application"] >
body content
</c:if>
属性 | 类型 | 描述 |
test+ | 布尔 | 决定处理任何现有bodycontent的测试条件 |
var | 字符串 | 引用测试条件值的有界变量名称;var的类型为Boolean |
scope | 字符串 | var定义的有界变量的范围 |
PS:模拟else的情况可一使用两次if,一次正常,一次相反
2、choose when 和otherwise标签
choose,when和Java中的switch,case类似
choose标签中必须嵌有一个或者多个when标签,每个when标签都表示一种可以计算和处理的情况,otherwise标签则用于默认的条件块,假如没有任何一个when标签的处理结果为true,则otherwise将被处理,otherwise必须放在最后一个when之后.
choose和otherwise标签没有属性,when标签必须带有定义测试条件的test属性,用来决定是否处理bodycontent.
3、遍历行为forEach
3.1 forEach 会无数次的反复遍历body content 或者对象的集合
可以被遍历的对象包括java.util.Collection,java.util.Map的全部实现,以及对象数组或者主类型,有两种形式:
1) 固定的次数重复body content
<c:forEach [var="varName"] begin="begin" end="end" step="step" >
body content
</c:forEach>
2) 用于遍历对象集合
<c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [ end="end"] [step="step"]>
body content
</c:forEach>
属性 | 类型 | 描述 |
var | 字符串 | 引用遍历当前项目的有界变量名称 |
items+ | 支持的任意类型 | 遍历的对象的集合 |
varStatus | 字符串 | 保存遍历状态的有界变量的名称,类型值是javax.servlet.jsp.jstl.core.LoopTagStatus,带有count属性,返回当前的次数 |
begin+ | 整数 | 如果指定items,遍历将从指定的索引处的项目开始,如果没有指定items,遍历将从设定的索引值开始,如果指定begin必须大于等于0 |
end+ | 整数 | 如果指定items,遍历将从指定的索引处的项目结束,如果没有指定items,遍历将从设定的索引值结束 |
step+ | 整数 | 遍历将只处理间隔指定step的项目,从一个项目开始,在这种情况下,step的值必须大于等于1 |
PS:var创建的有界变量的名称只在该forEach中使用,一到</c:forEach>处就会被删除。
3.2 forTokens标签
forTokens标签用来遍历以特定的分隔符隔开的令牌,用delims指定的分隔符,将元素分开
语法如下:
<c:forTokens items ="stringOfTokens" delims="delimiters" [var="varName" ] [varStatus="varStatusname"] [begin="begin"] [end="end" ] [step="step"]>
body content
</c:forTokens>
属性 | 类型 | 描述 |
var | 字符串 | 引用遍历当前项目的有界变量名称 |
items+ | 支持的任意类型 | 遍历的对象的集合 |
varStatus | 字符串 | 保存遍历状态的有界变量的名称,类型值是javax.servlet.jsp.jstl.core.LoopTagStatus,带有count属性,返回当前的次数 |
begin+ | 整数 | 如果指定items,遍历将从指定的索引处的项目开始,如果没有指定items,遍历将从设定的索引值开始,如果指定begin必须大于等于0 |
end+ | 整数 | 如果指定items,遍历将从指定的索引处的项目结束,如果没有指定items,遍历将从设定的索引值结束 |
step+ | 整数 | 遍历将只处理间隔指定step的token,从一个token开始,在这种情况下,step的值必须大于等于1 |
delims+ | 字符串 | 一组分隔符 |
来源:https://blog.csdn.net/Pruett/article/details/76974409


猜你喜欢
- 判断一个数是不是回文数示例,回文数就是原数与其倒置后的数相等,如:123321,到之后仍为123321,即为回文数题目:一个5位数,判断它是
- springboot整合nacos1、引入依赖<dependency> <groupId>
- 详解Android使用@hide的API的方法今天早上想修改MediaPlaybackService.Java(/packages/apps
- 前言JVM是Java中比较难理解和掌握的一部分,也是面试中被问的比较多的,掌握好JVM底层原理有助于我们在开发中写出效率更高的代码,可以让我
- Mybatis所需要的jar包:需要引用两个jar包,一个是mybatis,另一个是MySQL-connector-Java,如果是mave
- 2PC两阶段提交协议分布式事务通常采用2PC协议,全称Two Phase Commitment Protocol。该协议主要为了解决在分布式
- yaml介绍YAML(YAML Ain't Markup Language),一种数据序列化格式优点:容易阅读容易与脚本语言交互以数
- Spring-Data-Redis项目(简称SDR)对Redis的Key-Value数据存储操作提供了更高层次的抽象,类似于Spring F
- 在未分享整个查询分页的执行代码之前,先了解一下执行流程。1.总体上是利用mybatis的插件 * ,在sql执行之前拦截,为查询语句加上li
- 本文实例为大家分享了Unity3D实现物体排成弧行的具体代码,供大家参考,具体内容如下一般用在Pico、HTC、DP等VR设备中效果:完整代
- 项目中很多时候需要读取自定义配置文件,本地开发工具怎么写都成功但是部署到服务其上就出现问题,异常BOOT-INF/classes!/conf
- 在Java 5以前,是用synchronized关键字来实现锁的功能。synchronized关键字可以作为方法的修饰符(同步方法),也可作
- 在前面一篇Java Comparable和Comparator对比详解中,对于java中的排序方法进行比较和具体剖析,主要是针对 Compa
- 前言:小编引入的图片和文字描述都是来自于尚硅谷的视频讲解,在此感谢尚硅谷的老师,同时也结合 seata文档官方文档进行整合项目地址(gite
- 前言当我们在手机上使用360安全卫士时,手机屏幕上时刻都会出现一个小浮动窗口,点击该浮动窗口可跳转到安全卫士的操作界面,而且该浮动窗口不受其
- 对于数据的访问来说,肯定是在有缓存的情况下运行快一些。对于Hibernate这种与数据库结合紧密的框架来说,在调用数据的时候肯定会有缓存的出
- 一、项目结构二、pom.xml<?xml version="1.0" encoding="UTF-8&q
- 在application.xml加上以下配置mybatis-plus.configuration.map-underscore-to-cam
- 在Android7.0的手机上,自动更新的时候出现包解析异常,在其他的手机上没有这个问题。原因:Android7.0引入私有目录被限制访问和
- 在 Android 系统中,一般使用 AudioRecord 或者 MediaRecord 来采集音频。AudioRecord 是一个比较偏