0이 아닌 1페이지부터 시작하는 스프링 부트 페이지 설정을 하는 방법
페이지 번호 부여를 위해 boot(1.4.0) "Pageable"을 선택합니다.문제없이 정상적으로 동작합니다.그러나 기본적으로 페이지 값은 "0"부터 시작하지만, 프런트 엔드의 경우 페이지 값은 "1"부터 시작합니다.코드 내의 페이지 번호를 수동으로 늘리는 대신 값을 늘리는 표준 접근법이 있습니까?
public Page<Device> find(DeviceFindCommand deviceFindCommand, Pageable pageable){
//page = 0 //Actual is 0, Expected increment by 1.
}
어떤 도움이라도 감사할 것입니다.
Alan의 답변을 구현한 후 다음과 같은 문제를 안고 있습니다.
1) 그래도 첫 페이지를 반환하는 제로 페이지에 접속할 수 있습니다(이것이 문제인지 아닌지는 모르겠지만 좀 더 명확하게 하고 싶습니다).
http://localhost: 8180/api/v1/books/?page=3&size=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
}
2) "숫자" : 2. 응답에서는 항상 페이지 번호보다1개 적게 표시됩니다.현재 페이지 인덱스를 반환합니다.
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.
하지만 기억해주세요, 만약 당신이 이 버그를 바꾸더라도one-indexed-parameter페이지 응답(PageImplclass)는 제로 베이스의 페이지 번호로 결과를 반환합니다.조금 오해의 소지가 있을 수 있습니다.
봄은 이 미래도 추가했다.구성 파일에서 oneIndexed 매개 변수를 true로 만들면 페이지 수가 1페이지부터 시작됩니다.기본적으로는 false이며 페이지 수는 0부터 시작합니다.
spring.data.web.pageable.one-indexed-parameters=true
스프링 부트는 커버 아래에 스프링 데이터를 사용합니다.
설정할 필요가 있는 Spring Data 클래스는 다음과 같습니다.
org.springframework.data.web 입니다.PageableHandlerMethodArgumentResolver
특히 다음과 같은 방법을 사용합니다.
이렇게 하면 현재 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);
}
}
더 나은 결과를 얻으려면 다음과 같이 RepositoryRestMvcConfiguration을 확장해야 합니다.
@Configuration
public class RespositoryConfiguration extends RepositoryRestMvcConfiguration {
@Override
@Bean
public HateoasPageableHandlerMethodArgumentResolver pageableResolver() {
HateoasPageableHandlerMethodArgumentResolver resolver = super.pageableResolver();
resolver.setOneIndexedParameters(true);
return resolver;
}
}
그러면 하나 적은 '숫자'를 제외한 모든 링크와 페이지 번호 정보가 정확해집니다.페이지=1에 대한 결과를 참조하십시오.
"_links": {
"first": {
"href": "http://localhost:8080/user/user?page=1&size=5"
},
"self": {
"href": "http://localhost:8080/user/user"
},
"next": {
"href": "http://localhost:8080/user/user?page=2&size=5"
},
"last": {
"href": "http://localhost:8080/user/user?page=2&size=5"
}
},
"page": {
"size": 5,
"totalElements": 6,
"totalPages": 2,
"number": 0
}
언급URL : https://stackoverflow.com/questions/39884860/how-to-configure-spring-boot-pagination-starting-from-page-1-not-0
'programing' 카테고리의 다른 글
| 릴레이셔널 데이터베이스의 행을 삭제해야 합니까, 비활성화해야 합니까? (0) | 2023.03.01 |
|---|---|
| 인덱스와 함께 .map을 사용하여 반응합니다. (0) | 2023.03.01 |
| Laravel5 Json 파일 내용 가져오기 (0) | 2023.03.01 |
| Angularjs: '구문으로 컨트롤러' 및 $watch (0) | 2023.03.01 |
| 각도 JS에서 동적으로 CSS 스타일 속성 적용 (0) | 2023.03.01 |