2011-11-21 67 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语句获取数据,则会将分页参数转换为“限制”和“排序依据”等指令。