9.3.5 <c:if>标签
优质
小牛编辑
128浏览
2023-12-01
<c:if>标签用于进行条件判断,该标签相当于Java语言中的if(...){...}语句。<c:if>标签有如下两种语法格式:
语法1:没有标签体的情况
<c:if test="testCondition" var="varName"
[scope="{page|request|session|application}"]/>
语法2:有标签体的情况
<c:if test=”testCondition” [var=”varName”]
[scope=”{page|request|session|application}”]>
body content
</c:if>
其中黑休字部分为属性的默认值。
<c:if>标签的属性详细说明如表9.6所示。
表9.6 <c:if>标签的属性
属性名 | 是否支持动态属性值 | 属性类型 | 属性描述 |
test | true | boolean | 决定是否处理标签体的内容的条件表达式 |
var | false | String | 指定一个保存在某个Web域中的属性名。该属性值是test属性指定的表达式的执行结果 |
scope | false | String | 指定test属性的执行结果要保存的Web域 |
对于语法1,<c:if>标签只将test属性的计算结果保存在scope属性指定的Web域中,如果不指定var属性,则执行完test属性指定的表达式后,什么都不做。对于语法2,如果test属性的执行结果为true,则处理标签体中的内容。如果test属性的执行结果为false,则不处理标签体中的内容。当指定var属性时,也会和语法1一样,将test属性的执行结果保存在scope属性指定的Web域中。无论是语法1,还是语法2,当指定scope属性时,必须指定var属性,否则<c:if>将抛出异常。
if.jsp页面是一个演示<c:if>标签的例子,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
将test属性的执行结果保存在page域中<br>
将test属性的执行结果保存在session域中
<br>
<c:if test="${1 > 2}" var = "var_session" scope="session"/>
${var_session}<hr>
如果test属性的执行结果为true,输出标签体的内容<br>
<jsp:useBean id="message" class="chapter9.Message"/>
<jsp:setProperty property="name" name="message" value="bike"/>
<c:if test="${message.name == param.name}">
name属性值为bike
</c:if>
在浏览器地址栏中输入如下的URL:
http://localhost:8080/demo/chapter9/if.jsp?name=bike
浏览器显示的效果如图9.6所示。
图9.6 <c:if>标签的演示效果