[play1-template] listタグについて

  playframework1

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}

LEAVE A COMMENT