【问题标题】:How can I sort a list in Play Framework templates?如何在 Play Framework 模板中对列表进行排序?
【发布时间】:2012-12-13 15:55:51
【问题描述】:

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

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

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

【问题讨论】:

    标签: json groovy playframework playframework-1.x


    【解决方案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 已经提示您在控制器中进行排序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-26
        • 1970-01-01
        • 1970-01-01
        • 2021-12-10
        • 2020-12-23
        相关资源
        最近更新 更多