1
的Thymeleaf文档状态有关排序列表:排序列表中使用自定义的比较
/*
* Sort a copy of the given list. The members of the list must implement
* comparable or you must define a comparator.
*/
${#lists.sort(list)}
${#lists.sort(list, comparator)}
在我的文档模型,我有地图,用键值对(从JBake静态published_content
列表的列表页面生成器)。在我的模板中,我想通过比较映射中某个键下存储的值来对此列表进行排序。
换句话说,list
变量的类型为List<Map<String, Object>>
,我想通过比较存储在密钥"mykey"
下的每个映射中的值来对此列表进行排序。
如何在模板中制定这样的比较器?
问题是如何让这个'mapComparator = new Comparator(...)'进入模板?在哪里定义它以及如何从模板中访问此自定义代码......? – haui
您需要将mapComparator作为属性添加到控制器中的模型中:model.addAttribute(“mapComparator”,mapComparator);那么在你的模板中你可以使用:$ {#lists.sort(yourlist,mapComparator)} –
这很好,如果你有权访问模板**和模板引擎。当使用模板例如为了用JBake生成静态站点,这不是一个选项,因为还必须修改页面生成器。当我能够修改模板后面的模型时,我还可以添加提供整个排序方法的对象。我的这个'#lists.sort()'函数的存在在这种情况下意义不大。我正在寻找的是一种在模板本身内定义比较的机制。 – haui