JSP/Servlet | JSTL(JSP Standard Tag Library) | 条件文 <c:if>, <c:choose>, <c:when>, <c:otherwise>
JSTLでの条件文について見てみよう。
条件文 <c:if>
JSTLの条件は<c:if> ~ </c:if>で構成される。注意点は、他の言語と違ってelseがないことである。
属性の説明
| 項目 | 説明 | 必須 | デフォルト |
|---|---|---|---|
| test | 評価する条件 | 必須 | |
| var | 条件結果を保存する変数名 | ||
| scope | 条件結果を保存する変数のスコープ | page |
例
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:if> Tag Example</title>
</head>
<body>
<c:set var="aaa" value="1" scope="session"/>
<c:if test="${aaa == 1}">
<p>aは1です。<p>
</c:if>
</body>
</html>
結果表示
aは1です。
条件文 <c:choose>, <c:when>, <c:otherwise>
<c:choose>はJava言語のswitch-caseに似ており、複数の条件の中から1つを選択する。<c:choose>はswitchに相当し、<c:when>はcaseに相当し、<c:otherwise>はdefaultに相当する。
属性
<c:choose>タグには属性はない。<c:when>タグには下に示す1つの属性がある。<c:otherwise>タグには属性はない。
| 項目 | 説明 | 必須 | デフォルト |
|---|---|---|---|
| test | 評価する条件 | 必須 |
例
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title><c:choose> Tag Example</title>
</head>
<body>
<c:set var="a" value="${256}" scope="session"/>
<c:set var="result" value="${a % 3}" scope="session"/>
<c:choose>
<c:when test="${result == 1 || salary == 2}">
${a} は3の倍数ではありません。
</c:when>
<c:otherwise>
${a} は3の倍数です。
</c:otherwise>
</c:choose>
</body>
</html>
結果表示
${a} は3の倍数ではありません。
比較式: eq, ne, empty
条件文を使用するときは必ず値との比較を書くことになるが、JSTLではeq、ne、emptyのような比較式を利用できる。
| 式 | 記号 | 説明 |
|---|---|---|
| eq | == | 比較する値が同じか確認するときに使用する。 |
| ne | != | 比較する値が同じでないか確認するときに使用する。 |
| empty | == null | 比較する値がnullか確認するときに使用する。nullでない場合を表すには!emptyを使う。 |
eq (==) 例
<c:if test="${list eq null}">...</c:if> <!-- null比較 -->
<c:if test="${int eq 0}">...</c:if> <!-- 数値比較 -->
<c:if test="${str eq 'a'}">...</c:if> <!-- 文字列比較 -->
ne (!=) 例
<c:if test="${list ne null}">...</c:if> <!-- null比較 -->
<c:if test="${int ne 0}">...</c:if> <!-- 数値比較 -->
<c:if test="${str ne 'a'l}">...</c:if> <!-- 文字列比較 -->
empty (== null) 例
<c:if test="${empty list}">...</c:if> <!-- collectionオブジェクトが空の場合 -->
<c:if test="${!empty list}">...</c:if> <!-- collectionオブジェクトが空でない場合 -->