分页在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
不确定问题出在哪里,请提出一些解决方案
答案 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类对其进行排序的原因。我欢迎更好的想法,如何以苔藓数字排序格式或其他任何方式保存我的实例。