<c:choose>
xmlns:c="http://java.sun.com/jsp/jstl/core"
SYNOPSIS
<c:choose>
</c:choose>
| <c:when> * | - | if または else if に相当します. |
| <c:otherwise> ? | - | else 文に相当します. |
説 明
内包する <c:when>, <c:otherwise> のうち、条件に一致した
ひとつを評価するタグです。プログラミング言語における if-elseif-else を表現しています。
else や if else が不要であれば <c:if> を使用したほうがすっきり記述できます。
また単純な条件と出力であれば EL の 3 項条件演算子で代用することが出来ます。
内 容
if または else if に相当します。
複数指定された場合は上から順番に評価され、最初に真と評価されたタグの内部のみが出力されます。
else 文に相当します。
全ての
<c:when> 条件と一致しなかった場合に出力されます。
不要な場合は省略することが出来ます。
使用例
現在時刻によってメッセージを切り替えます。
条件ブロック内には JSP 構文や他の拡張タグを記述することができます。
リクエストパラメータ
同じ処理を
JSP
<jsp:useBean id="current" class="java.util.Date" />
<c:choose>
<c:when test="${current.hours<3}">こんばんは</c:when>
<c:when test="${current.hours<10}">おはよう</c:when>
<c:when test="${current.hours<18}">こんにちは</c:when>
<c:otherwise>こんばんは</c:otherwise>
</c:choose>
foo の入力が省略されている場合は "default-value" が
入力されたのと同じ動きをします。
JSP
<c:choose>
<c:when test="${not empty param['foo']}">
<c:set var="foo" value="${param['foo']}" />
</c:when>
<c:otherwise>
<c:set var="foo" value="default-value" />
</c:otherwise>
</c:choose>
<c:choose> はある程度まとまったブロックを条件分岐するのに向いています。
属性値の一部のみを書き換えるなど、細かな部分での条件は 3 項演算子を使用した方が読みやすい
場合も多々あります。
JSP
<span style="color:${value<0? 'red': 'black'};">
<fmt:formatNumber value="${value}" type="currency" />
</span>
<c:choose> で記述すると冗長すぎて可視性が悪くなります。
JSP
<span style="color:<c:choose>
<c:when test="${value<0}">red</c:when>
<c:otherwise>black</c:otherwise>
</c:choose>">
<fmt:formatNumber value="${value}" type="currency" />
</span>