JSTL (JSP Standard Tag Library)における <c:if>
タグは、指定された条件式を真 (true)と評価した場合にのみ、その内容をHTMLに出力する。
<c:if test="condition">
contents
</c:if>
test属性には、判定条件をEL式で指定する。
条件の判定結果が真であれば、HTMLにcontentsが出力される。
<c:if>タグには、次の属性を指定できる。
scope属性にはスコープ(変数の有効範囲)を指定する。
属性値 | 変数の有効範囲 |
---|---|
page | JSPページ |
request | HTTPリクエスト |
session | HTTPセッション |
application | Webアプリケーション |
scope属性にpageを指定すると、変数はこのJSPページでのみ有効になり、他のJSPページと共有することができなくなる。page暗黙オブジェクトのgetAttributeメソッドで変数の値を取得することができる。
scope属性にrequestを指定すると、変数はこのリクエストで有効になり、1回のリクエストで情報を共有することができる。request暗黙オブジェクトのgetAttributeメソッドで変数の値を取得することができる。
scope属性にsessionを指定すると、変数はこのセッションで有効になり、複数のリクエストを跨いで共有することができる。session暗黙オブジェクトのgetAttributeメソッドで変数の値を取得することができる。
scope属性にapplicationを指定すると、変数はWebアプリケーションで有効になり、Webアプリケーション全体で共有することができる。application暗黙オブジェクトのgetAttributeメソッドで変数の値を取得することができる。
var属性に変数名を指定すると、test属性に指定した条件式の判定結果がその変数に格納される。
変数の値 | 説明 |
---|---|
true | test属性に指定された条件式の判定結果が真 |
false | test属性に指定された条件式の判定結果が偽 |
JSTLの<c:if>タグで複数条件を判定するには、EL式のandやorを使う。
<c:if test="${length >= 4 and length <= 16}">
正しい長さです。
</c:if>
<c:if test="${length > 16 or length < 4}">
短すぎるか長すぎます。
</c:if>
変数が空文字またはNULLかどうかを判定するには、emptyを使う。
<c:if test="${empty var}">
var is empty or null.
</c:if>
変数が空文字またはNULLではないかどうかを判定するには、not empty又は!emptyを使う。
<c:if test="${not empty var}">
var is not empty or null.
</c:if>
<c:if test="${!empty var}">
var is not empty or null.
</c:if>
変数をトリム(前後の空白を削除)してから空文字またはNULLかどうかを判定するには、fn:trim()を使う。
<c:if test="${empty fn:trim(var)}">
trimmed var is empty or null.
</c:if>
Javaで文字列比較するには String クラスのequalsメソッドを使用するが、JSTLの<c:if>タグはEL式の等価演算子(==
)で文字列比較できる。
<c:if test="${var1 == '文字列1'}">
文字列が一致しました。
</c:if>
汎用プログラミング言語のif文には、条件が偽の場合を表すelseがある。しかし、JSPのif文にはelseは無い。
JSPで条件により複数分岐させる場合は、<c:if>
ではなく <c:choose>
を使う。
JSP (JavaServer Pages) には、他にも次のJSP標準タグライブラリ(JSTL)がある。
JSPには次のディレクティブがある。
JSPには次のアクションタグがある。