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所示。

06

图9.6 <c:if>标签的演示效果