Grails – 排序列表输出而不必具有SortedSet或Comparable模型?

Grails – 排序列表输出而不必具有SortedSet或Comparable模型?,第1张

概述我正在猛烈抨击我认为在Grails中解决的一个非常简单的问题: 说我有购物车般的模型;所以一个类Cart有多个项目,每个项目都属于购物车.一般来说,我不关心购物车中物品的顺序 – 我不关心它们存储在什么顺序,计算等等.但是,我确实想以相同的顺序显示它们.在我看来,这个逻辑应该能够在视图层中完整地存在,但是我能够找到的唯一解决方案告诉我将项目声明为模型层中的SortedSet.这也会影响我的控制器层 我正在猛烈抨击我认为在Grails中解决的一个非常简单的问题:

说我有购物车般的模型;所以一个类Cart有多个项目,每个项目都属于购物车.一般来说,我不关心购物车中物品的顺序 – 我不关心它们存储在什么顺序,计算等等.但是,我确实想以相同的顺序显示它们.在我看来,这个逻辑应该能够在视图层中完整地存在,但是我能够找到的唯一解决方案告诉我将项目声明为模型层中的SortedSet.这也会影响我的控制器层,因为简单的List *** 作(如.collect {}现在需要额外的语法跳转以保持类型转换正确并保留我的排序.

对我来说,这是坚果,所以我必须错过一些简单的东西!有没有办法,例如,做一些像< g:each in =“${cart.items.sort {it.name}}”>或类似的东西,这样我只能在输出/视图层强制执行一致的显示顺序?编辑 – 见Matt的答案如下;这个版本确实有效.

感谢您的任何建议或指示!

解决方法 This 3rd party tag看起来它会做你需要的.如果没有,您可以随时制作自己的标签. Tag类可以像这样进行排序

class SortTaglib {    static namespace = 'sort'    def sort = { attrs ->        // A closure that does the sorting can be passed as an attribute to the tag.        // If it is not provIDed the default sort order is used instead        def sorter = attrs.sorter ?: {item1,item2 -> item1 <=> item2}        sorter = sorter as Comparator                // The collection to be sorted should be passed into the tag as a parameter        Collections.sort(attrs.items,sorter)    }}

然后可以使用此标记按名称属性对对象集合进行排序,如下所示:

<sort:sort items="someCollection" sorter="${someComparatorClosure}"/>

someCollection引用的集合将在执行标记时就地排序.

总结

以上是内存溢出为你收集整理的Grails – 排序列表输出而不必具有SortedSet或Comparable模型?全部内容,希望文章能够帮你解决Grails – 排序列表输出而不必具有SortedSet或Comparable模型?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1246275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存