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}