Freemarker:如何使用数组变量

时间:2016-02-09 00:29:23

标签: arrays freemarker

我有一个我想在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内置规范(“columns”不是我创建的hash var)。无论如何,任何有关如何实现这一目标的建议都将受到赞赏。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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