【问题标题】:Freemarker: how to reorder a sequence using an array variableFreemarker:如何使用数组变量重新排序序列
【发布时间】:2016-02-09 00:29:22
【问题描述】:

我有一个序列,我想在 ftl 中重新排序。我想知道是否有一种方法可以传入我在页面中创建的数组 var(使用序列中存在的值)并将其用作重新排序值。这是我尝试过的代码:

<#assign reorderedList = ["order3","order1","order4","order2"]>
<#list columns?sort_by('reorderedList') as column>
    ${column.name}
</#list>

我也试过这个:

<#assign reorderedList = [
    {"name":"mstarAnalystRating"},
    {"name":"mstarRatingOverall"},
    {"name":"lipper"},
    {"name":"grading"}] />

<#list columns?sort_by('reorderedList["name"]') as column>
    ${column.name}
</#list>

我意识到这些都不符合 sort_by 内置规范(“列”不是我创建的哈希变量)。无论如何,任何有关如何实现这一目标的建议都将不胜感激。

【问题讨论】:

    标签: arrays freemarker


    【解决方案1】:

    你不应该在 FTL 中这样做,实际上你不能以任何理智的方式。甚至在当时添加?sort_by 可能是个坏主意,因为排序并不是 MVC 视图的真正职责(除非你有一些花哨的 UI 组件,但随后,它会使用 JavaScript 或通过 Ajax 在服务器端进行排序打回来)。理想情况下,模板应该使列表已经排序。如果你真的做不到,请从模板中调用一些帮助 Java 方法来完成这项工作。

    【讨论】:

    • 感谢指导
    【解决方案2】:

    因此,我没有重新排序,而是将每个值分配给一个 var,并按照我在 FTL 中想要的顺序输出它们。不优雅但只有四个值。

    【讨论】:

      【解决方案3】:

      对我的问题的后续回答:Freemarker 现在内置了“?sort_by”: http://freemarker.org/docs/ref_builtins_sequence.html#ref_builtin_sort_by

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-11
        • 2021-11-21
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 2015-09-09
        • 2019-11-19
        • 2012-06-02
        相关资源
        最近更新 更多