我有两个域模型:
class Resource{
String name
static mapping = {
sort name:"asc"
}
}
class ResourceGroup{
String groupName
static hasMany = [resources: Resource]
}
控制器:
def resGroups = ResourceGroup.findAll()
render (
view: "index",
model: [resourcegroups: resGroups]
)
所以现在我的gsp:
<g:each in="${resourcegroups}" var="item" status="i">
...
<g:each in="${item.resources}" var="res" status="y">
<!-- THESE ITEM.RESOURCES ARE UNSORTED! -->
</g:each>
...
</g:each>
我的问题是如何对“item.resources”进行排序?这是一套持久的休眠!我认为这可以使用映射排序名称来处理:'asc',但它不起作用: - (
答案 0 :(得分:1)
item.resources.sort { it.name }
,
"asc"
对于item.resources.sort { it.name }.reverse()
,或"desc"
。
答案 1 :(得分:0)
您不能对一对多或多对多关系进行默认排序。请参阅documentation here,特别注意底部的说明:
这些映射不适用于默认的单向一对多或多对多关系,因为它们涉及连接表。有关详细信息,请参阅this issue。考虑使用SortedSet或带有排序参数的查询来获取所需的数据。
您指定的默认排序实际上会对Resource
个对象的列表进行排序(即如果您获得了此列表Resource.getAll()
,则列表将按您指定的顺序排序。
要做你想要的事情,考虑创建一个标签库,如唐建议here。