Kou*_*raj 19 spring jpa spring-mvc spring-data-jpa
我有一个PagingandSorting Repository,它有一个接受可分页对象的方法.我还有一个通过URL接受可分页对象的控制器.
我的用例是,如果用户在URL中指定页面大小参数,则必须为可分页对象获取该值.如果他没有提到默认值为50.
但是可分页对象现在默认为20.
任何建议都会有所帮助
Ala*_*Hay 47
如果您正在讨论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) {
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以在Spring配置中使用以下配置全局默认值,如下所示在XML和Java配置中.
请注意,较新版本的Spring Data使用基于零的页面索引,而旧版本使用1作为第一页.如果您的UI分页库期望1作为第一页,那么您可以将该oneIndexedParameters
属性设置为true
:
配置是否在请求参数中公开和假设基于1的页码索引.默认为false,表示请求中的页码0等于第一页.如果将其设置为true,则请求中的页码1将被视为第一页.
参数:oneIndexedParameters - 要设置的oneIndexedParameters
如果没有PageableDefault或PageableDefaults(后者仅在传统模式下支持)可以在要解析的方法参数中找到,则将Pageable配置为用作后备.如果将此参数设置为null,请注意,如果在请求中找不到可分页数据,则控制器方法将被置空.请注意,这样做将要求您提供bot页面和size参数以及请求,因为任何可用参数都没有默认值.
参数: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>
Run Code Online (Sandbox Code Playgroud)
在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);
}
}
Run Code Online (Sandbox Code Playgroud)
Prz*_*wak 16
对于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.
Run Code Online (Sandbox Code Playgroud)
Sat*_*jan 13
您可以在application.yml中设置如下
spring.data.rest.default-page-size: 50
Run Code Online (Sandbox Code Playgroud)
并且,为了完整性,这里是Spring Boot配置的示例.在扩展WebMvcConfigurerAdapter的@Configuration类中,将默认页面大小设置为50个项目,如下所示:
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setFallbackPageable(new PageRequest(0, 50));
argumentResolvers.add(resolver);
super.addArgumentResolvers(argumentResolvers);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以在分页参数之前使用此注释:
@PageableDefault(size = 40)
// so your parameter should be like this:
@PageableDefault(size = 40) Pageable pageable
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41629 次 |
最近记录: |