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

2024-04-29

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

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

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

任何建议都会有所帮助


如果您正在谈论 Spring Data PagingAndSortingRepository,您可以使用以下方法设置默认页面大小@PageableDefault在 Controller 方法上如下:

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) https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/web/PageableHandlerMethodArgumentResolver.html#setOneIndexedParameters-boolean-

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

参数: oneIndexedParameters - 要设置的 oneIndexedParameters

  • 公共无效setFallbackPageable(可分页fallbackPageable) https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/web/PageableHandlerMethodArgumentResolver.html#setFallbackPageable-org.springframework.data.domain.Pageable-

将 Pageable 配置为在没有 PageableDefault 或情况下用作后备 PageableDefaults(后者仅在传统模式下受支持)可以是 在要解析的方法参数处找到。如果将其设置为空, 请注意,您的控制器方法将被传递给 null 如果请求中找不到可分页数据。注意,这样做 将要求您向机器人提供页面和尺寸参数 请求,因为任何参数都没有默认值 可用的。

参数:fallbackPageable - 用作常规的 Pageable 倒退。

在 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 Config 中,如下所示:

@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);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置 JPA 可分页对象的默认页面大小 的相关文章

随机推荐