<c:if>

"value="">c:if< scope=""page""

<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>
執行結果為: $
</body>
</html>
筆者在判斷用戶送來的參數時,如果username的值等於Admin時,則會將condition設為true並存放於pageScope中,否則存放於condition中,最後再顯示結果。因為JSTL會自動找尋condition所存在的屬性範圍,因此只須使用 $,而不用 ${pageScope.condition}。Core_if.jsp的執行結果如圖7-7。
注意
執行本範例時,請在Core_if.jsp後加上?username=Admin。

相關詞條

相關搜尋

熱門詞條

聯絡我們