6

SpringDataのWebページ付けを機能させようとしています。ここで説明されています:

http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/repositories.html#web-pagination

これが私のJava(Spring Web MVC @Controllerハンドラーメソッド)です:

@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
    @PageableDefaults(value = 50, pageNumber = 0) Pageable pageable,
    Model model) {

    log.debug("Params: pageNumber={}, pageSize={}",
        pageable.getPageNumber(), pageable.getPageSize());

    ...
}

そして、これが私のSpring構成です。

<mvc:annotation-driven>
    <mvc:argument-resolvers>
        <bean class="org.springframework.data.web.PageableArgumentResolver" />
    </mvc:argument-resolvers>
</mvc:annotation-driven>

(上記の構成が現在これを行う方法のようです。リンクで説明されている構成アプローチは非推奨です。)

pageとパラメータを使用して実際にページネーションを制御しようとするとpage.size、後者は問題なく機能しますが、前者は機能しません。たとえば、私がヒットした場合

http://localhost:8080/myapp/list?page=14&page.size=42

ログ出力は

Params: pageNumber=0, pageSize=42

したがって、引数リゾルバーが機能していることはわかっていますが、ページ番号が解決されない理由はわかりません。他のパラメータ名(page.number、pageNumber、page.numなど)をたくさん試しましたが、どれも機能しません。

これは他の誰かのために働いていますか?

4

3 に答える 3

7

ページパラメータは実際には少し直感的ではありません-page.pageではなくpage、に変更するとpage.page動作するはずです。

于 2013-03-22T21:18:56.890 に答える
2

調べてみると、とは構成可能であることがPageableArgumentResolverわかったので、それを持たないようにクラスを構成できます。prefixseparator

public class PageableArgumentResolver implements WebArgumentResolver {

    private static final Pageable DEFAULT_PAGE_REQUEST = new PageRequest(0, 10);
    private static final String DEFAULT_PREFIX = "page";
    private static final String DEFAULT_SEPARATOR = ".";

@Configurationクラスでは、、、およびをデフォルトとして使用して、別の方法で実現しましたpagesizesortsortDir

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    PageableArgumentResolver resolver =  new PageableArgumentResolver();
    resolver.setPrefix("");
    resolver.setSeparator("");
    argumentResolvers.add(new ServletWebArgumentResolverAdapter(resolver));
}

今これは動作します

http://:8080 / myapp / list?page = 14&size = 42

于 2014-11-06T17:29:28.383 に答える
0

必要に応じて、次のようにしてパラメータを上書きできます。

<mvc:annotation-driven>
    <mvc:argument-resolvers>
        <bean   class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
            <property name="oneIndexedParameters" value="true"></property>
            <property name="pageParameterName" value="page"></property>
            <property name="sizeParameterName" value="size"></property>
        </bean>
    </mvc:argument-resolvers>
</mvc:annotation-driven>
于 2015-05-14T21:30:17.543 に答える