如何从第1页开始配置Spring引导分页,而不是0

Vel*_*aga 15 spring pagination spring-mvc spring-data-jpa spring-boot

引导(1.4.0)分页的"可分页".它没有任何问题.但默认情况下,页面值从"0"开始,但在前端页面值从"1"开始.那么是否有任何增加值的标准方法而不是手动增加代码中的页码?

public Page<Device> find(DeviceFindCommand deviceFindCommand, Pageable pageable){
//page = 0 //Actual is 0, Expected increment by 1. 
}
Run Code Online (Sandbox Code Playgroud)

任何帮助都应该是值得的.

在实施Alan回答有以下问题后,

1)仍然我能够访问返回第一页的零页面(我不知道这是不是问题,但我希望得到更好的清晰度).

HTTP://本地主机:8180/API/V1 /书籍/页= 3&大小= 2

响应

{
    "content": [
{
  "id": "57da9eadbee83fb037a66029",
  .
  .
  .
}{
.
.
.
}
],
    "last": false,
    "totalElements": 5,
    "totalPages": 3,
    "size": 2,
    "number": 2, //strange always getting 1 less than page number.
    "sort": null,
    "first": true,
    "numberOfElements": 2
}
Run Code Online (Sandbox Code Playgroud)

2)"数字":2,在响应中总是得到一个小于页码.它应该返回当前页面索引.

Prz*_*wak 11

如果您使用的是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=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)

但请记住,即使您更改one-indexed-parameter页面响应(PageImpl类)将返回基于零的页码的结果.这可能有点误导.

  • 我提交了一个关于显示基于零的当前页面的响应的问题,即使配置基于一个页面的分页https://jira.spring.io/browse/DATACMNS-563我必须承认我仍然对于预期的内容感到困惑api在这里. (3认同)

Ala*_*Hay 7

Spring Boot将使用Spring Data.

您需要配置的Spring Data类如下:

org.springframework.data.web.PageableHandlerMethodArgumentResolver

特别是以下方法:

http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/web/PageableHandlerMethodArgumentResolver.html#setOneIndexedParameters-boolean-

这将允许您按原样使用当前UI分页,即第一页= 1.

在Boot应用程序中,我认为配置可能类似于:

@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);
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

Spring 也添加了这个未来。只需在您的配置文件中使 oneIndexed 参数等于 true,分页将从第 1 页开始。默认情况下,它的 false 和分页从 0 开始。

spring.data.web.pageable.one-indexed-parameters=true
Run Code Online (Sandbox Code Playgroud)

  • 最好还添加一些细节来支持您的答案。 (2认同)