JSONコンテンツをレンダリングするこのテンプレートがあります:
[
#{list data}
{
"title": ${_.title},
"id": ${_.id}
}
#{if !_isLast},#{/if}#{/list}
]
data
データ メンバーを印刷する前に、テンプレート内で並べ替える方法はありますか?
JSONコンテンツをレンダリングするこのテンプレートがあります:
[
#{list data}
{
"title": ${_.title},
"id": ${_.id}
}
#{if !_isLast},#{/if}#{/list}
]
data
データ メンバーを印刷する前に、テンプレート内で並べ替える方法はありますか?
並べ替えなどのロジックを実行するのがコントローラーの目的です。テンプレートで並べ替えを行うべきではありません。テンプレートはレンダリング用です。
必要な基準に従って json オブジェクトを並べ替える Comparator を作成し、データをテンプレートに渡す前に Collections.sort(data, yourComparator) を呼び出します。
可能です:
//src
%{
exampleList = ["z", "y", "a", "b"]
}%
<ul>
#{list items:exampleList.sort(), as:'product'}
<li>${product}</li>
#{/list}
</ul>
//rendered
<ul>
<li>a</li>
<li>b</li>
<li>y</li>
<li>z</li>
</ul>
さらに、ソート方法をラムダ式で sort() に指定できます。いくつかの例を次に示します: http://groovy.codehaus.org/JN1015-Collections
ただし、JSON をレンダリングするためにテンプレート エンジンをまったく使用しないことをお勧めします。コントローラーhttp://wiki.fasterxml.com/JacksonInFiveMinutesから Jackson を使用するか、コントローラー クラス (http://www.playframework.org/documentation/api/1.2.5/play/mvc/Controller) から renderJson を使用できます。 html . Palako は、コントローラーでソートするためのヒントを既に提供しています。