【发布时间】:2012-12-13 15:55:51
【问题描述】:
我有这个模板呈现 JSON 内容:
[
#{list data}
{
"title": ${_.title},
"id": ${_.id}
}
#{if !_isLast},#{/if}#{/list}
]
有没有办法在打印数据成员之前对模板内的data 进行排序?
【问题讨论】:
标签: json groovy playframework playframework-1.x
我有这个模板呈现 JSON 内容:
[
#{list data}
{
"title": ${_.title},
"id": ${_.id}
}
#{if !_isLast},#{/if}#{/list}
]
有没有办法在打印数据成员之前对模板内的data 进行排序?
【问题讨论】:
标签: json groovy playframework playframework-1.x
执行诸如排序之类的逻辑是控制器的用途,您不应该在模板中进行排序,模板是用于渲染的。
编写一个 Comparator,按照您想要的标准对您的 json 对象进行排序,并在将数据传递给模板之前调用 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()一个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 已经提示您在控制器中进行排序。
【讨论】: