java c标签 if_JSTL Core标签库 c:if标签 条件标签 <c:forEach>:<c:forTokens>:迭代标签...

15.4条件标签

条件标签能够实现Java语言中的if语句及if-else语句的功能,它包括以下几种。

:用于实现Java语言中的if语句的功能。

、和:用于实现Java语言中的if-else语句的功能。

15.4.1 标签

标签用于实现Java语言中的if语句的功能,它的语法为:

1.

2.var="代表逻辑表达式的值的命名变量的名字"

3.scope="{page|request|session|application}"/>

标签会把逻辑表达式的值存放在var属性指定的命名变量中,scope属性则指定命名变量的范围,scope属性的默认值是page(页面范围)。

例如以下标签先判断username请求参数的值是否为Tom,然后把判断结果作为result命名变量存放在请求范围内:

1.

2.${result}

以上标签等价于以下Java程序片段:

1.

2.Stringusername=request.getParameter("username");

3.if(username!=null && username.equals("Tom"))

4.request.setAttribute("result",true);

5.else

6.request.setAttribute("result",false);

7.%>

标签还可以包含标签主体,只有当逻辑表达式的值为true时,才会执行标签主体。例如:

1.

2.Saving user

3.

4.

以上标签等价于以下Java程序片段:

1.

2.Stringsave=request.getParameter("save");

3.if(save!=null && save.equals("user")){

4.//对应标签的主体

5.out.print("Saving user")

6.pageContext.setAttribute("user","Tom");

7.}

8.%>

15.5迭代标签

迭代标签包括以下几种。

:用于遍历集合中的对象,并且能重复执行标签主体。

:用于遍历字符串中用特定分隔符分隔的子字符串,并且能重复执行标签主体。

15.5.1 标签(1)

标签用于遍历集合中的对象,并且能重复执行标签主体,它和本书第13章的13.4节(创建和使用iterate标签)介绍的标签的作用有些相似。

1.基本语法

标签的基本语法为:1.2.标签主体3.

标签每次从集合中取出一个元素,并且把它存放在NESTED范围内的命名变量中,在标签主体中可以访问这个命名变量。NESTED范围是指当前标签主体构成的范围,只有当前标签主体才能够访问NESTED范围内的命名变量。

例如以下代码先创建了一个names集合,然后通过标签遍历这个集合,并打印集合中的所有元素:1.2.8.">9.${name}  10.

运行以上代码,得到的打印结果为"Tom Mike Linda"。以上标签等价于以下Java程序片段:1.2.9.10.标签的主体11.name=(String)pageContext.getAttribute("name");12.out.print(name+" ");13.%>14.15.

以上第一个和第三个Java程序片段完成标签的任务,即在每一次循环中,先从names集合中取出一个元素,把它作为name命名变量存放在页面范围内,接着执行标签主体,然后从页面范围内删除name命名变量,从而确保只有当前标签主体才能访问name命名变量。因此尽管在实现上,name命名变量位于页面范围,但是在逻辑上,name命名变量属于NESTED范围。

以上第二个Java程序片段完成标签主体的任务,即从页面范围内读取name命名变量,并输出它的值。

2.标签的varStatus属性

标签的varStatus属性用于设定一个javax.servlet.jsp.jstl.core. LoopTagStatus类型的命名变量,它位于NESTED范围,这个命名变量包含了从集合中取出的当前元素的状态信息。

count:当前元素在集合中的序号,从1开始计数。

index:当前元素在集合中的索引,从0开始计数。

first:当前元素是否是集合中的第一个元素。

last:当前元素是否是集合中的最后一个元素。

例程15-2的namelist.jsp中的标签就使用了varStatus属性。

例程15-2 namelist.jsp1.2.3.4.5.11.12.13.14.序号15.索引16.是否是第一个元素17.是否是最后一个元素18.元素的值19.20.21."varStatus="status">22.23.${status.count}24.${status.index}25.${status.first}26.${status.last}27.28.29.30.${name}31.32.33.${name}34.35.36.37.38.39.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值