1

grails で paginate タグを使用しようとしていますが、機能していません。

コントローラーで:

def show(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    def etpse
    def total

    if (params.data == 'all') {

        etpse = Enterprise.findAll()
        total = Enterprise.count()
    }

    else {
        def paramsLike = "%" + params.data + "%"
        etpse = Enterprise.findAllByKeywordLike(paramsLike)
        total = Enterprise.countByKeywordLike(paramsLike)
    }

    [etpseList: etpse, instanceTotal: total]
}

gsp で:

<div id='pagination'>
    <g:paginate total="${instanceTotal}" />
</div>
4

3 に答える 3

2

このpaginateタグは、ページの結果をフィルタリングしたり、アイテムのリストをレンダリングしたりしません。リクエストのパラメーターに基づいて、次/前のページへのリンクを作成するだけです。

コントローラはデータの正しいページを取得する責任があり、gsp はアイテムの実際のリストをレンダリングする責任があります。

タグ パラメータは、paginateパラメータを GORM 注入listメソッドに一致させるように設計されており、ほとんどの場合、密接に関連しています。

class ItemController {
    def list() {
        [items: Item.list(params), itemCount: Item.count()]
    }
}

見る:

<g:each var="item" in="${items}">
    <!-- render items here -->
</g:each>

<g:paginate controller="item" action="list" total="${itemCount}"/>

上記のコードでは、params リスト ( や などを含むmax)がドメイン クラスのメソッドにoffset渡され、1 ページのデータが取得されます。listItem

paginate タグは、同じエントリのリクエスト パラメータを調べ、表示しているデータのページを特定し、max と offset の正しい値を使用して、次のページと前のページへの必要なリンクを作成します。

于 2013-06-12T14:51:52.587 に答える
0

params max と offset を findAll に渡す必要があります。そうしないと、Grails は結果セットのページ付けの方法を知りません。

例えば、

Book.findAll(query, [max: 10, offset: 5])

于 2013-06-12T14:52:33.033 に答える