分页列表

时间:2011-11-21 12:03:50

标签: grails

我有一个服务,它将一个域类对象列表返回给控制器。我正在寻找一些可以获取分页参数的内容,并像MyDomain.list(params)那样对此列表进行分页。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

将分页参数传递给您的服务方法。如果在从数据库中检索对象后进行分页(在您的控制器中为控制器),您的查询仍将返回许多您不需要的对象,这可能会成为性能问题。

否则,如果您仍然希望在没有gorm功能的情况下进行分页,那么您可以对列表进行切片,即def sliceList = list[5..10]

答案 1 :(得分: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语句获取数据,您可以将分页参数转换为'limit'和'order by'等指令。