如何在Play Framework模板中对列表进行排序?

时间:2012-12-13 15:55:52

标签: json groovy playframework playframework-1.x

我有这个模板呈现JSON内容:

[
#{list data}
{
    "title": ${_.title},
     "id": ${_.id}
} 
#{if !_isLast},#{/if}#{/list}
]

在打印数据成员之前,有没有办法在模板内对data进行排序?

2 个答案:

答案 0 :(得分:4)

执行排序等逻辑是控制器的用途,您不应该在模板中进行排序,模板用于渲染。

编写一个Comparator,按照您想要的标准对您的json对象进行排序,并在将数据传递给模板之前调用Collections.sort(data,yourComparator)。

答案 1 :(得分:3)

有可能:

//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()一个lambda表达式如何排序,这里有一些例子:http://groovy.codehaus.org/JN1015-Collections

但最好不要使用模板引擎来渲染JSON。您可以使用控制器http://wiki.fasterxml.com/JacksonInFiveMinutes中的Jackson或使用控制器类中的renderJson:http://www.playframework.org/documentation/api/1.2.5/play/mvc/Controller.html。 Palako已经给出了你在控制器中排序的提示。