FreeMarker 模板 - 双重排序

标签 freemarker

我正在开发 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/

相关文章:

java - 绑定(bind)形式-freemarker + Spring MVC

arrays - 仅在 freemarker 中创建 "object"(无 JAVA 等)?

freemarker - Freemarker 模板中的 Keycloak 访问 cookie 和/或 url 查询参数

java - Apache Camel 多播 FreeMarker

datetime - 如何使用 Freemarker 计算两个 ISO8601 日期之间的天数差异?

javascript - 在 FreeMarker 上获取 URL 的 queryString 参数的更好方法

freemarker - 访问 freemarker 中的嵌套对象

java - 如何使用 servlet 运行 Freemarker 模板?

Struts2.3.15 freemarker集成

java - 我可以通过 freemarker 访问注释吗?