说我有购物车般的模型;所以一个类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模型?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)