Как перебрать список объектов в обратном порядке в Grails?

Из списка объектов базы данных GORM, которые упорядочены по убыванию в моей модели домена пользователя, я хочу упорядочить их по возрастанию (т. е. в обратном порядке в представлении). Например, чтобы получить последние книги пользователя из базы данных, но вставить их в Дом в обратном порядке, где последняя книга идет последней.

Как выполнить реверс каждого в моем GSP?

Контроллер:

def books = user.books

ВСП:

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

person confile    schedule 08.05.2013    source источник


Ответы (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}

person dmahapatro    schedule 08.05.2013
comment
Я не согласен, модель не подразумевает никакого порядка. Столы не упорядочены. На мой взгляд, порядок отображения объектов является частью логики представления. - person James Kleeh; 08.05.2013
comment
Если у меня def newestBooks = user.books?.reverse() установлена ​​модель? - person dmahapatro; 08.05.2013
comment
Это не работает, потому что в доменном классе нет порядка. - person confile; 08.05.2013
comment
В вопросе говорится, что объекты упорядочены по описанию в домене user. Если это не так, его необходимо отсортировать в контроллере, как показано в обновлении выше в ответе. - person dmahapatro; 08.05.2013

Вы можете использовать сортировку по умолчанию для сбора отношений, как описано здесь. Итак, если вы определяете так:

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

Коллекция будет отсортирована на уровне базы данных

person Mr. Cat    schedule 08.05.2013