提问者:小点点

为JPA可分页对象设置默认页面大小


我有一个分页和排序存储库,它有一个访问可分页对象的方法。我还有一个控制器,它通过URL接受可分页对象。

我的用例是,如果用户在URL中指定页面大小参数,我必须为可分页对象取该值。如果他没有提到,则取默认值50。

但是可分页对象现在默认为20。

任何建议都会有帮助


共3个答案

匿名用户

如果您谈论的是Spring Data PagingAndSorting Repository,您可以通过在Controller方法上使用@PageableDefault来设置默认页面大小,如下所示:

public String listClients(@ModelAttribute FilterForm form, Model model, WebRequest request, @PageableDefault(sort = { "surname",
            "forename", "address.town" }, value = 50) Pageable pageable) {

    }

或者,您可以在Spring配置中使用以下配置全局默认值,如下所示XML和Java配置。

请注意,较新版本的Spring Data使用从零开始的页面索引,而旧版本的第一页使用1。如果您的UI分页库期望1作为第一页,那么您可以将oneIndexedParameters属性设置为true

  • 公共无效setOneIndexedParameters(布尔值oneIndexedParameters)

配置是否在请求参数中公开并假设基于1的页码索引。默认为false,表示请求中的页码为0等于第一页。如果设置为true,则请求中的页码为1将被视为第一页。

参数:oneIndexedParameters-要设置的oneIndexedParameter

  • 公共无效setFallbackPag可分页(可分页回退分页)

如果要解析的方法参数中找不到PageableDefault或PageableDefaault(后者仅在传统模式下支持),则将Pagable配置为备用。如果将此设置为null,请注意,如果在请求中找不到可分页数据,您的控制器方法将被传递为null。请注意,这样做将需要您在请求中提供bot页面和size参数,因为任何可用参数都没有默认值。

参数:backbackPag可分页-用作通用回退的可分页。

在XML,这看起来如下所示:

<mvc:annotation-driven>
    <mvc:argument-resolvers>
        <bean class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
            <property name="oneIndexedParameters" value="true"/>
            <property name="fallbackPageable">
                <bean class="org.springframework.data.domain.PageRequest">
                    <constructor-arg name="page" value="1" />
                    <constructor-arg name="size" value="10" />
                </bean>
            </property>
        </bean>
    </mvc:argument-resolvers>
</mvc:annotation-driven>

在Java配置中,如下所示:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {


    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
        resolver.setOneIndexedParameters(true);
        resolver.setFallbackPageable(new PageRequest(1, 20));
        argumentResolvers.add(resolver);
        super.addArgumentResolvers(argumentResolvers);
    }
}

匿名用户

对于Spring Boot 2. X,您有一组参数:

# DATA WEB (SpringDataWebProperties)
spring.data.web.pageable.default-page-size=20         # Default page size.
spring.data.web.pageable.max-page-size=2000           # Maximum page size to be accepted.
spring.data.web.pageable.one-indexed-parameters=false # Whether to expose and assume 1-based page number indexes.
spring.data.web.pageable.page-parameter=page          # Page index parameter name.
spring.data.web.pageable.prefix=                      # General prefix to be prepended to the page number and page size parameters.
spring.data.web.pageable.qualifier-delimiter=_        # Delimiter to be used between the qualifier and the actual page number and size properties.
spring.data.web.pageable.size-parameter=size          # Page size parameter name.
spring.data.web.sort.sort-parameter=sort              # Sort parameter name.

匿名用户

您可以在application. yml中设置以下内容

spring.data.rest.default-page-size: 50