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>

いい感じ。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/298
visit my web site at 2015年8月 5日 12:53

As someone who built and supports 29,000 1:1 VDI instances I agree with some of your statements but not all of them. While 3 years ago storage was absolutely the bottleneck the reality is that these days I’m more concerned with CPU and RAM consumption with newer application sets. For instance a running instance of Lync 2013 consumes 150mb of RAM as compared to Lync 2010 which consumed 25 mb. Across the board that’s a substantial increase that is difficult to account for. Server-based application delivery solutions alleviate that but with an added cost in both usability and infrastructure.