diff --git a/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java b/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java index ac859ff6a..89cd8468f 100644 --- a/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java +++ b/src/main/java/org/springframework/data/web/PagedResourcesAssembler.java @@ -290,10 +290,11 @@ public class PagedResourcesAssembler implements ResourceAssembler, Pa * @param page must not be {@literal null}. * @return */ - private static PageMetadata asPageMetadata(Page page) { + private PageMetadata asPageMetadata(Page page) { Assert.notNull(page, "Page must not be null!"); - return new PageMetadata(page.getSize(), page.getNumber(), page.getTotalElements(), page.getTotalPages()); + boolean isOneIndexedParameters = pageableResolver.isOneIndexedParameters(); + return new PageMetadata(page.getSize(), isOneIndexedParameters ? page.getNumber() + 1 : page.getNumber(), page.getTotalElements(), page.getTotalPages()); } private String baseUriOrCurrentRequest() { diff --git a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java index b91a1349c..31f668931 100755 --- a/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java +++ b/src/test/java/org/springframework/data/web/PagedResourcesAssemblerUnitTests.java @@ -159,6 +159,9 @@ public class PagedResourcesAssemblerUnitTests { assertThat(resource.hasLink("prev")).isTrue(); assertThat(resource.hasLink("next")).isTrue(); + // We expect 2 as the created page has index 1. Pages itself are always 0 indexed, so we created page 2 above. + assertThat(resource.getMetadata().getNumber()).isEqualTo(2); + assertThat(getQueryParameters(resource.getLink("prev"))).containsEntry("page", "1"); assertThat(getQueryParameters(resource.getLink("next"))).containsEntry("page", "3"); }