使用 org.springframework.data.domain.Pageable
.我想从 1 开始寻呼号码。我看到了同样的帖子并做到了,但它们在我的应用程序中不起作用。
获取 Spring 启动分页码数从 1 开始而不是 0
Spring 数据休息 - 配置分页
build.gradle
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.data:spring-data-rest-webmvc'
}
配置
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
import org.springframework.data.web.config.PageableHandlerMethodArgumentResolverCustomizer;
import org.springframework.stereotype.Component;
@Component
public class CustomConfig implements PageableHandlerMethodArgumentResolverCustomizer {
@Override
public void customize(PageableHandlerMethodArgumentResolver pr) {
pr.setOneIndexedParameters(true);
}
}
控制器
@GetMapping("/")
public Integer index(Pageable pageable) {
return pageable.getPageNumber();
}
结果
% curl 'localhost:8080/'
0
% curl 'localhost:8080/?page=1'
0
% curl 'localhost:8080/?page=2'
1
我想做
% curl 'localhost:8080/'
1
% curl 'localhost:8080/?page=1'
1
% curl 'localhost:8080/?page=2'
2
尝试使用如下所示WebMvcConfigurerAdapter
进行配置,而不是直接实现PageableHandlerMethodArgumentResolverCustomizer
。
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setOneIndexedParameters(true);
argumentResolvers.add(resolver);
super.addArgumentResolvers(argumentResolvers);
}
}
如果您使用的是 Spring Boot 2.X,则可以从 WebMvcConfigurerAdapter
切换到应用程序属性,如下所示:
# 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=true # 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.
仅供参考,您需要更改以下内容:
@GetMapping("/")
public Integer index(Pageable pageable) {
return pageable.getPageNumber();
}
对此:
@GetMapping("/")
public Integer index(
@RequestParam(value = "page", required = false, defaultValue = "0") int page,
@RequestParam(value = "size", required = false, defaultValue = "10") int size,
@PageableDefault(value = 10, page = 0) Pageable pageable) {
return pageable.getPageNumber();
}
你需要在你的请求中有这些GET参数,以便Spring可以将它们强制到可分页对象中,你可以用这种方式定义它们,为它们选择名称,等等。
由于这个强制/绑定过程是spring.data.web.pageable.one-indexed-parameters属性的工作,这就是请求需要的外观。