如何在 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 扩展

Play Framework 1.2.4:#select 模板的选定选项

渲染 Play framework 2.0.2 模板的一部分