play1のlistタグについてマニュアルに載っていない(?)書式もあるようなのでまとめておく。
基本
itemsにコレクション変数を指定し、as
に1件ごとデータを受け取るローカルな変数名を指定する。指定しなかった場合は${_}
で参照する。
コレクションが空だった場合の処理をelse節に書くことができる。
#{list items:listItems, as:'item' }
<a href="${item.link}>${item.caption}</a>
#{/list}
#{else}
リンクがありません
#{/else}
引数にコレクション変数だけ指定することもできる。
#{list listItems}
<a href="${_.link}>${_.caption}</a>
#{/list}
便利ステータス
as
で指定した変数名を元にして以下の変数が使える。tableや項目リストを作成するのに便利です。
${as}_index | ループ回数。1から開始。 |
${as}_isFirst | 最初の要素の場合に True。 |
${as}_isLast | 最後の要素の場合に True。 |
${as}_parity | 偶数行の場合は even、奇数行の場合は odd。 |
as
を指定しなかった場合はそのまま_isFirst
や_isLast
とという変数名になる。
#{list items:posts, as:'post' }
#{if post_isFirst}<ul>#{/if}
<li #{if post_parity=='even'}class="even"#{/if}>${post.name}</li>
#{if post_isLast}</ul>#{/if}
#{/list}
for文的な使い方
コレクション変数を用いたforeach的な書き方以外に、0から10まで繰り返し、のようなこともできる。groovyユーザなら見覚えのある書き方。
#{list items:0..10, as:'i'}
${i + (i_isLast ? '' : ', ')}
#{/list}