Search code examples
jsonrestspring-mvcspring-dataspring-data-rest

Spring Data Rest - Configure pagination


Using Spring Data REST with JPA in version 2.1.0.

How can I configure the pagination in order to have the page argument starting at index 1 instead of 0 ?

I have tried setting a custom HateoasPageableHandlerMethodArgumentResolver with an mvc:argument-resolvers, but that doesn't work:

<mvc:annotation-driven>
  <mvc:argument-resolvers>
      <bean class="org.springframework.data.web.HateoasPageableHandlerMethodArgumentResolver">
          <property name="oneIndexedParameters" value="true"/>
      </bean>
  </mvc:argument-resolvers>
</mvc:annotation-driven>

Note that this behaviour is perfectly coherent with the documentation for mvc:argument-resolver that says:

Using this option does not override the built-in support for resolving handler method arguments. To customize the built-in support for argument resolution configure RequestMappingHandlerAdapter directly.

But how can I achieve this ? If possible, in a clean and elegant way ?


Solution

  • I use to do it using a customizer, which is something that they keep adding for more and more components with every new version:

    @Bean
    public PageableHandlerMethodArgumentResolverCustomizer pageableResolverCustomizer() {
        return resolver -> resolver.setOneIndexedParameters(true);
    }
    

    You can put this in any @Configuration class, but ideally you should put it (with any other customization) in one that implements RepositoryRestConfigurer.