我想在grails应用程序中添加一些分页内容。我有列表操作,其中我做了这个:
if(!params.max){
params.max = 3
}
def query = Profile.where {
userType == "F"
}
def freelancers = query.list(sort:"firstName", max:params.max)
if(freelancers) {
def freelancersCount = query.count()
return[freelancer:freelancers, fCount:freelancersCount]
} else {
response.sendError(404)
}
在gsp中我写道:
<div id="paginate">
<g:paginate controller="freelancers" action="list" total="${fCount}"/>
</div>
一切正常,我的数据库中有5个对象,在浏览器中打开gsp页面时只能看到3个,但是当我点击Next打开其他2个对象时,我看到相同的3个。什么是错的,我必须做什么?
答案 0 :(得分:8)
您需要将偏移量传递给您对list的调用:
def freelancers = query.list(sort:"firstName", offset:params.offset,
max:params.max)
答案 1 :(得分:1)
1)如果您正在使用Criteria查询,那么:
params.max = Math.min(max ?: 10, 100)
Integer offset = params.offset as Integer ?: 0
List userInstanceList = User.createCriteria().list(max:params.max,offset:offset) {
or {
ilike('name', "%${name}%")
ilike('email', "%${email}%")
}
order('dateCreated', 'desc')
}
2)如果您正在使用GORM查询,那么:
params.max = Math.min(max ?: 10, 100)
Integer offset = params.offset as Integer ?: 0
List<User> userList=User.list(max:params.max,offset:offset)