<c:if>

<c:if>的用途就和我们一般在程序中用的if一样。
语法
语法1:没有本体内容(body)
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
语法2:有本体内容
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
本体内容
</c:if>
属性
名 称
说 明
EL
类 型
必 须
默认值
test
如果表达式的结果为true,则执行本体内容,false则相反
Y
boolean
是
无
var
用来储存test运算后的结果,即true或false
N
String
否
无
scope
var变量的JSP范围
N
String
否
page
说明
<c:if> 标签必须要有test属性,当test中的表达式结果为true时,则会执行本体内容;如果为false,则不会执行。例如:${param.username = = 'admin'},如果param.username等admin时,结果为true;若它的内容不等于admin时,则为false。
于
接下来看下列的范例:
<c:if test="${param.username = = 'admin' }">
ADMIN您好!! //body部分
</c:if>
如果名称等于admin,则会显示"ADMIN您好!! "的动作,如果相反,则不会执行<c:if>的body部分,所以不会显示"ADMIN您好!! //body部分"。另外<c:if>的本体内容除了能放纯文字,还可以放任何JSP程序代码(Scriptlet)、JSP 标签或者HTML码。
除了test属性之外,<c:if>还有另外两个属性var和scope。当我们执行<c:if>的时候,可以将这次判断后的结果存放到属性var里;scope则是设定var的属性范围。哪些情况才会用到var和scope这两个属性呢?例如:当表达式过长时,我们会希望拆开处理,或是之后还须使用此结果时,也可以用它先将结果暂时保留,以便日后使用。
范例
笔者写了一个简单的范例,名称为Core_if.jsp。
Core_if.jsp
<%@ page contentType="text/html;charset=GB2312 " %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>CH7 - Core_if.jsp</title>
</head>
<body>
<h2><c:out value="<c:if> 的用法" /></h2>
<c:if test="${param.username == 'Admin'}" var="condition" scope="page">
您好Admin先生
</c:if></br>
执行结果为: ${condition}
</body>
</html>
笔者在判断用户送来的参数时,如果username的值等于Admin时,则会将condition设为true并存放于pageScope中,否则存放于condition中,最后再显示结果。因为JSTL会自动找寻condition所存在的属性范围,因此只须使用 ${condition},而不用 ${pageScope.condition}。Core_if.jsp的执行结果如图7-7。
注意
执行本范例时,请在Core_if.jsp后加上?username=Admin。