2

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

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

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

4

2 回答 2

4

Doing logic such as sorting is what controllers are for, you shouldn't be sorting in your template, templates are for rendering.

Write a Comparator that sorts your json objects following your desired criteria and call Collections.sort(data, yourComparator) before passing data to the template.

于 2012-12-14T00:21:53.427 回答
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。您可以使用控制器中的 Jackson http://wiki.fasterxml.com/JacksonInFiveMinutes或使用控制器类中的 renderJson:http://www.playframework.org/documentation/api/1.2.5/play/mvc/Controller。 .html _ Palako 已经提示您在控制器中进行排序。

于 2012-12-13T21:31:34.207 回答