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
猜你喜欢
- Java语言中反射 * 接口的解释与演示Java在JDK1.3的时候引入了 * 机制、可以运用在框架编程与平台编程时候捕获事件、审核数据
- 本文实例为大家分享了javaweb多文件上传及zip打包下载的具体代码,供大家参考,具体内容如下项目中经常会使用到文件上传及下载的功能。本篇
- 目录一、SpringMvc框架简介1、Mvc设计理念2、SpringMvc简介二、SpringMvc执行流程1、流程图解2、步骤描述3、核心
- 概述本文的编写初衷,是想了解一下Spring Boot2中,具体是怎么序列化和反序列化JSR 310日期时间体系的,Spring MVC应用
- strftime函数主要用于时间格式化,它的函数原型如下:size_t __cdecl strftime(char * __restrict
- 文章来源:aspcn 作者:孙雯简单的WEB服务器一个简单的WEB服务器将由列表9.2这样构建.当然,还必须要对方法和回应事件进行改进.简单
- Map集合的概述概述:interface Map<K,V> 其中K是键的类型,键是唯一的,不重复。V是值的类型,是可以重复。且每
- 一、问题描述有时候,我们会遇到在遍历List集合的过程中删除数据的情况。看着自己写的代码,感觉完全没有问题,但就是达不到预期的效果,这是为什
- @RequestBody部分属性丢失问题描述JavaBean实现public class VerifyNewFriendApplyReq i
- Java序列化是将一个对象编码成一个字节流,反序列化将字节流编码转换成一个对象。 序列化是
- 1 redis主从复制的概念多机环境下,一个redis服务接收写命令,当自身数据与状态发生变化,将其复制到一个或多个redis。这种模式称为
- 在《Spring Boot Hello World》中介绍了一个简单的spring boot例子,体验了spring boot中的诸多特性,
- public class CrossSum{ public static void main(String args[]){
- JAVA中的类只能是public 或者package的。这是符合逻辑的:人们定义类的初衷就是为了让别人用的。倘若是private,别人怎么调
- 1、代码设计的代理模式代理模式属于构建型模式(Proxy),提供了对目标对象的一种访问方式; 即通过代理对象访问目标对象。这样做的好处是:可
- 1.概述数据库开发一直是JAVA开发的核心之一,作为现在JAVA EE的基石框架,Spring Boot自身携带了一个JDBCTemplat
- 本文实例为大家分享了java实现随机数生成器的具体代码,供大家参考,具体内容如下自己编的随机数生成器,比较简陋,功能也单一,当作练手。App
- 初次接触spring-boot的时候,我们经常会看到这样的文章:“
- 本文实例讲述了Java基于栈方式解决汉诺塔问题。分享给大家供大家参考,具体如下:/** * 栈方式非递归汉诺塔 * @author zy *
- 今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中