分页不适用于grails中的列表

时间:2012-05-27 19:18:10

标签: grails pagination

分页在grails中对我不起作用。我也无法在GUI中看到分页按钮。我在GUI中看到了整个列表

def lists={
params.max = Math.min(params.max ? params.int('max') : 10, 100) 
def submittedList=[],InstanceList=[]
submittedList=FicheRequest.executeQuery("select fr.id,fr.MOSSNumber from FicheRequest fr where  fr.status=?",['Submitted']) 
    if(submittedList.size()>0){
    def sortedSubmittedList=new MossNumberSorting().getSortedMossNo(submittedList as ArrayList[])
    sortedSubmittedList.each{sortedId->InstanceList.add(FicheRequest.get(sortedId))}
            }
    else
    flash.message="No Submitted Request exists in the queue"

    return [InstanceList:InstanceList, InstanceTotal: InstanceList.count()] 
}

在我正在使用的gsp中

<div class="paginateButtons">
            <g:paginate total="${InstanceTotal}" />
        </div>

我也在网址

中看到了max和offset参数
http://localhost:9090/apps2/lists?offset=0&max=10

不确定问题出在哪里,请提出一些解决方案

2 个答案:

答案 0 :(得分:0)

你可能忘记将params传递到行:
submittedList=FicheRequest.executeQuery("select fr.id,fr.MOSSNumber from FicheRequest fr where fr.status=?",['Submitted'])
试试这样:
submittedList=FicheRequest.executeQuery("select fr.id,fr.MOSSNumber from FicheRequest fr where fr.status=?",['Submitted'],[max:params.max,offset:params.offset])
查看更多详情:
http://grails.org/doc/latest/ref/Domain%20Classes/executeQuery.html

答案 1 :(得分:0)

我找到了一个粗略的解决方案,用于对我的数组列表进行分页。我可以使用max和offset值传递完整列表,并获取我想在视图中显示的列表:

http://www.intelligrape.com/blog/2010/09/14/grails-pagination-on-filtered-list/

但这不是一个好的解决方案,因为它需要加载所有数据库值以进行分页。我想到的一个解决方案是将域实例存储为苔藓数字排序格式。苔藓数的格式有点复杂;这就是为什么我在从DB中检索所有实例后使用Comparator类对其进行排序的原因。我欢迎更好的想法,如何以苔藓数字排序格式或其他任何方式保存我的实例。