我有一个分页和排序存储库,它有一个访问可分页对象的方法。我还有一个控制器,它通过URL接受可分页对象。
我的用例是,如果用户在URL中指定页面大小参数,我必须为可分页对象取该值。如果他没有提到,则取默认值50。
但是可分页对象现在默认为20。
任何建议都会有帮助
如果您谈论的是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
:
配置是否在请求参数中公开并假设基于1的页码索引。默认为false,表示请求中的页码为0等于第一页。如果设置为true,则请求中的页码为1将被视为第一页。
参数:oneIndexedParameters-要设置的oneIndexedParameter
如果要解析的方法参数中找不到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