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オブジェクトが空でない場合 -->