我正在开发 FreeMarker 模板,用于使用 HighChart 创建图表输出,我们需要根据 2 个不同的列进行双重排序。
示例:使用 2 个不同的列“地区”和“国家”对国家/地区列表进行排序
我检查了其他论坛,发现双重排序已在数组元素中定义,如下所示,但不是在单个元素级别。
current.children?sort_by('type')?sort_by(['properties','cm:name'])
这是代码片段
<#--Assign the array values-->
<#assign country = country + [ {
"category":"${level1}",
"value":level1Value?number,
"color": color?string,
"superRegion":"${level3?upper_case}",
"region":"${level2?upper_case}"
} ] >
对列表进行排序 - 下面的双重排序不起作用。有谁知道如何进行双重排序?
<#list country?sort_by("superRegion")?reverse?sort_by("region") as countrySorted>
最佳答案
?sort_by
无法按复合“键”排序(自 2.3.23 起)。应用 ?sort_by
两次只会对整个列表重新排序。
通常,列表在传递给模板之前应该先进行排序。我不确定这对于你的情况是否可行。如果没有,您仍然可以为其编写一个 TemplateMethodModelEx
并将其放入数据模型等中。(另外我已经注意到 ?sort_by
应该能够做到这个,因为它已经存在了......也许一些贡献者会选择它。)
关于FreeMarker 模板 - 双重排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33672671/