如何在Grails中以相反的顺序迭代对象列表?

时间:2013-05-08 00:24:45

标签: grails grails-2.0 gsp grails-domain-class

从我的用户域模型中命令desc的GORM数据库对象列表中,我想将它们命令为asc(即,在视图中以相反的顺序排序)。例如,从数据库中获取用户的最新书籍,但以最后一本书最后出版的相反顺序将它们插入到Dom中。

如何在GSP中执行反向操作?

控制器:

def books = user.books

GSP:

<g:each in="${books}" var="book">${book}</g:each>

2 个答案:

答案 0 :(得分:3)

您可以按照here所述对关系集合使用默认排序。所以,如果你这样定义:

class User {
    …
    static hasMany = [books: Book]
    static mapping = {
        books sort: 'publishDate', order: 'asc'
    }
}

该集合将按数据库级别进行排序

答案 1 :(得分:2)

<g:each in="${books.reverse()}" var="book">${book}</g:each>

修改

走开了:)我宁愿建议:

控制器中的

def books = user.books?.reverse()

(关注点分离,视图不应具有操纵model)的逻辑

<强>更新

如果books中没有订购User,则需要进行显式排序。

def newestBooks = user.books?.asList().sort{it.publishDate}

反向排序使用

def newestBooks = user.books?.asList().sort{-it.publishDate}