6

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 つしか表示されませんが、[次へ] をクリックして他の 2 つのオブジェクトを開くと、同じ 3 つのオブジェクトが表示されます。何が間違っていて、何をしなければならないのですか?

4

2 に答える 2

8

listへの呼び出しにオフセットを渡す必要があります。

def freelancers = query.list(sort:"firstName", offset:params.offset, 
max:params.max)
于 2012-07-16T15:12:02.537 に答える
1

1) 基準クエリを使用している場合:

 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)
于 2014-09-04T10:54:09.767 に答える