dT*blog

design and programming

c:forEach varStatus のプロパティ一覧

JSTL の <c:forEach> は、strutsタグの <logic:iterate> に比べて格段に便利だ。最もその差を感じるのが、ループ内で扱えるステータス変数の扱いやすさ。

<c:forEach> のステータス変数が持つプロパティの一覧。

プロパティ機能初期値
varStatus.indexループインデックス0
varStatus.countカウント値1
varStatus.first最初の要素かどうかの真偽値
varStatus.last最後の要素かどうかの真偽値
varStatus.beginbegin属性値(開始値)
varStatus.endend属性値(終了値)
varStatus.stepstep属性値(増分)
varStatus.current現在値

first とか last とか、かゆいところに手が届いていて嬉しい。贅沢を言えるなら、perl の HTML::Template にあるような odd や even プロパティなんかあると、テーブルの縞模様とか二段組がカンタンに作れるのにね。

使用例とか。

strutsの場合。

<bean:size name="form" property="datalist" id="datanum" />
<logic:iterate name="form" property="datalist" id="data" indexId="loop">
  <logic:equal name="loop" value="0">
    // ループ1回目だけの処理
  </logic:equal>
  <bean:write name="data" property="name" />
  <logic:equal name="loop" value="<%= String.valueOf(datanum.intValue()-1) %>">
    // ループの最後だけの処理
  </logic:equal>
</logic:iterate>

これと同じことをJSTLで。

<c:forEach items="${form.datalist}" var="data" varStatus="loop">
  <c:if test="${loop.first}">
    // ループ1回目だけの処理
  </c:if>
  <c:out value="${data.name}" />
  <c:if test="${loop.last}">
    // ループの最後だけの処理
  </c:if>
</c:forEach>

いい感じ。

Posted by dT by 15:49

トラックバック

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt/mt-tb.cgi/298

コメント




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30