如果您谈论的是 Spring Data PagingAndSortingRepository,您可以通过在 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:
配置是否公开和假设从 1 开始的页码索引
请求参数。默认为 false,表示页码为 0
在请求中等于第一页。如果设置为 true,则页面
请求中的数字 1 将被视为第一页。
参数:oneIndexedParameters - 要设置的 oneIndexedParameters
将 Pageable 配置为在没有 PageableDefault 或
PageableDefaults(后者仅在传统模式下支持)可以是
在要解析的方法参数处找到。如果将此设置为空,
请注意,您的控制器方法将在
如果请求中找不到 Pageable 数据。请注意,这样做
将要求您为机器人提供页面和尺寸参数
请求,因为任何参数都没有默认值
可用。
参数: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);
}
}