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を負にするループはできない。
