13

これは私の現在の PageableResolver です:

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    PageableArgumentResolver resolver = new PageableArgumentResolver();
    resolver.setFallbackPageable(new PageRequest(1, 5));
    argumentResolvers.add(new ServletWebArgumentResolverAdapter(resolver));
}

しかし、PageableArgumentResolver は非推奨であり、PageableHandlerMethodArgumentResolver にリンクされています。これは、次のように、アダプターなしで登録できると思います。

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
    resolver.setFallbackPageable(new PageRequest(0, 5));
    argumentResolvers.add(resolver);
}

まず最初に、新しいクラス PageableHandlerMethodArgumentResolver の実装が少し異なりnew PageRequest(1, 5)ます。2. ページを参照するためnew PageRequest(0, 5)、最初のページを表示するために使用する必要がありました。

しかし、この新しいオブジェクトにはまだ問題があります。パラメータなしで(page.pageでもpage.sizeでもない)URLを呼び出すと、ページネーションバーの最初のロードは完璧です。次に、ページネーション バーに移動したい場合、2 つのパラメーター (page.page=3&page.size=5 など) を使用して同じ URL を呼び出していますが、最初のページが表示されたままです。この新しい Resolver には、フォールバック条件がアクティブにならないように、これら 2 つのパラメーター以上のものが必要だと思います。この PageableHandlerMethodArgumentResolver を使用する方法を知っていますか?

4

3 に答える 3

4

パラメータ名は、次のメソッドを使用して変更できます: setPageParameterName、setSizeParameterName。

最初のページが 1 の場合は、この setOneIndexedParameters を true に設定します。

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
    resolver.setPageParameterName("page.page");
    resolver.setSizeParameterName("page.size");
    resolver.setOneIndexedParameters(true);
    argumentResolvers.add(resolver);
    super.addArgumentResolvers(argumentResolvers);
}
于 2014-07-03T13:40:05.357 に答える
2

Bean 定義でパラメーター名を変更できます。

    <annotation-driven>
    <argument-resolvers>
        <beans:bean class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
            <beans:property name="maxPageSize" value="7"></beans:property>
            <beans:property name="oneIndexedParameters" value="true"></beans:property>
            <beans:property name="pageParameterName" value="page.page"></beans:property>
            <beans:property name="sizeParameterName" value="page.size"></beans:property>
        </beans:bean>
    </argument-resolvers>
</annotation-driven>

これにより、デフォルトのパラメータ名が上書きされます。

于 2014-01-09T13:38:04.093 に答える