如何在 Play Framework 模板中对列表进行排序?
Posted
技术标签:
【中文标题】如何在 Play Framework 模板中对列表进行排序?【英文标题】:How can I sort a list in Play Framework templates? 【发布时间】:2012-12-13 15:55:51 【问题描述】:我有这个模板呈现 JSON 内容:
[
#list data
"title": $_.title,
"id": $_.id
#if !_isLast,#/if#/list
]
有没有办法在打印数据成员之前对模板内的data
进行排序?
【问题讨论】:
【参考方案1】:执行诸如排序之类的逻辑是控制器的用途,您不应该在模板中进行排序,模板是用于渲染的。
编写一个 Comparator,按照您想要的标准对您的 json 对象进行排序,并在将数据传递给模板之前调用 Collections.sort(data, yourComparator)。
【讨论】:
【参考方案2】:有可能:
//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 已经提示您在控制器中进行排序。
【讨论】:
以上是关于如何在 Play Framework 模板中对列表进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
Play Framework 2.4 在 Scala 模板中使用注入变量
将 Java 类导入 Groovy 模板(Play framework 1.x)
Play framework 2.2.0 打印最终解决的依赖列表
模板的 Play Framework 自定义 java 扩展