我有一个我想在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)。无论如何,任何有关如何实现这一目标的建议都将受到赞赏。
答案 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