2011-11-21 64 views
0

我有一個服務,它返回一個域類對象列表到控制器。我正在尋找一些採取分頁參數和分類如MyDomain.list(params)這樣的列表。有什麼建議麼?分頁列表

回答

3

將分頁參數傳遞給您的服務方法。如果在從數據庫中檢索對象(在您的案例中的控制器中)後執行分頁,則查詢仍然會返回許多不需要的對象,並且可能會成爲性能問題。

否則,如果你仍然想有沒有格姆功能分頁,那麼你可以切你的清單即def sliceList = list[5..10]

+0

我想做的服務方法的分頁,但我認爲這將是一個有點亂,因爲我需要返回子列表和整個列表的大小。我現在將兩條信息都返回到一個列表'[subList:blah,totalCount:blah]',這樣很好。謝謝! – zoran119

2

你想在你的控制器或服務中進行分頁嗎?

如果你想在控制器進行分頁,似乎很容易做到:

def myList = service.listItems() 
if (params.sort) 
    myList = myList.sort {it."${params.sort}"} 
if (params.order == "desc") 
    myList = myList.reverse() 
int from = params.offset ?: 0 
int to = from + (params.max ?: DEFAULT_SIZE) 
myList = myList.subList(from, to) 

如果你想在服務分頁(例如,不必所有行從服務每次提取) ,你必須在那裏移動分頁邏輯。你將如何實現它取決於服務的功能;如果它通過SQL語句獲取數據,則會將分頁參數轉換爲「限制」和「排序依據」等指令。