2013-05-08 92 views
0

從我的用戶域模型中排序的GORM數據庫對象列表中,我想要命令它們爲asc(即在視圖中以相反的順序)。例如,要從數據庫中獲取用戶的最新書籍,但要以最後一本書最後一本書的相反順序將它們插入到Dom中。如何在Grails中以相反順序迭代對象列表?

如何在我的GSP中執行反向操作?

控制器:

def books = user.books 

GSP:

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

回答

2

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

編輯

了忘乎所以:)。我寧可建議:

def books = user.books?.reverse()在控制器中。

(關注的分離,圖不應有操縱model的邏輯)

UPDATE:

萬一booksUser是不排序,則需要顯式排序。

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

反向排序使用

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

+0

我不同意進行排序,該模型意味着沒有秩序。表格沒有排序。在我看來,對象顯示順序是視圖邏輯的一部分。 – 2013-05-08 01:05:38

+0

如果我有'def newestBooks = user.books?.reverse()'設置爲模型? – dmahapatro 2013-05-08 01:10:32

+0

這不起作用,因爲域類中沒有順序。 – confile 2013-05-08 01:28:15

3

您可以使用默認的排序爲關係集合描述here。所以,如果你像這樣定義:

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

收集將在數據庫級別