JSTL覚え書き/Coreタグライブラリ
仕事でJSTLを使ったので、覚え書きです。今回使ったのは、Coreタグライブラリの一部でした。
今後は使うタグが増えたら追記しようかと。
JSTL
JSTLは「JSP Standard Tag Library」の略でJSPでよく使われるカスタムタグをまとめたもの。
Coreタグ
使い方
Coreタグを使うJSPファイルの先頭に下記を記述する。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set>
変数に値をセットする。
属性名 | 内容 |
---|---|
var | 変数名 |
value | 設定する値 |
scope | varのスコープ |
target | オブジェクト変数名 |
property | targetのプロパティ名 |
target
とproperty
は一緒に使用する。その場合はvar
が不要。
サンプル
<c:set var="year" value="1999" scope="page"/>
<c:out>
値を画面に出力する。
属性名 | 内容 |
---|---|
value | 出力する変数または値 |
default | valueがnullの場合に表示する値 |
escapeXml | 予約文字のエスケープ有無。デフォルトはtrue |
サンプル
<c:out value="${year}" default="2000"/>
<c:out value="年"/>
<c:if>
条件分岐を行う。
属性名 | 内容 |
---|---|
test | 条件式 |
var | testの結果を格納する変数名 |
scope | varのスコープ |
注意点
elseは無い。
サンプル
<c:if test="${tableHeader.colspan == 0}"></c:if>
<c:if test="${tableHeader.colspan == 1}">
<th>見出し</th>
</c:if>
<c:if test="${tableHeader.colspan > 1}">
<th colspan="${tableHeader.colspan}">見出し</th>
</c:if>
<c:choose> <c:when> <c:otherwise>
条件分岐を行う。switch~case
のような使い方。case
との違いは条件が一致(==
)以外でも使えること 。属性は<c:when>
のみ有効。
属性名 | 内容 |
---|---|
test | 条件式 |
サンプル
<c:choose>
<c:when test="${tableHeader.colspan == 0}"></c:when>
<c:when test="${tableHeader.colspan == 1}">
<th>見出し</th>
</c:when>
<c:otherwise>
<th colspan="${tableHeader.colspan}">見出し</th>
</c:otherwise>
</c:choose>
下記の記述もできる。
<c:choose>
<c:when test="${tableHeader.colspan == 0}"></c:when>
<c:when test="${tableHeader.colspan == 1}">
<th>見出し</th>
</c:when>
<c:when test="${tableHeader.colspan > 1}">
<th colspan="${tableHeader.colspan}">見出し</th>
</c:when>
</c:choose>
<c:forEach>
ループ処理を行う。
属性名 | 内容 |
---|---|
var | itemsから取り出した要素を格納する変数 |
items | ループ対象の配列またはコレクション |
begin | 開始インデックス |
end | 終了インデックス |
step | 1ループあたりの移動量 |
varStatus | 現在のループ状態 |
varStatusの内容
変数 | 内容 |
---|---|
current | 現在のvar |
index | varのインデックス番号(0..n-1) |
count | 現在のループ回数(1..n) |
first | ループの先頭かどうか |
last | ループの最後かどうか |
begin | beginの値 |
end | endの値 |
step | stepの値 |
サンプル
<c:forEach var="item" items="${items}" varStatus="status1">
<c:out value="${item.no}" /><c:out value=", " />
</c:forEach>
<c:forEach var="i" begin="0" end="10" step="2" varStatus="status2">
<c:out value="${i}" /><c:out value=", " />
</c:forEach>
注意点
begin > end
でstep
を負にするループはできない。