@Bean public PageableHandlerMethodArgumentResolver pageableResolver() { PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver = new PageableHandlerMethodArgumentResolver(sortResolver()) { @Override public Pageable resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) { Pageable pageable = super.resolveArgument(methodParameter, mavContainer, webRequest, binderFactory); return new PageRequestProxy(pageable.getPageNumber(), pageable.getPageSize(), pageable.getSort()); } }; pageableHandlerMethodArgumentResolver.setPageParameterName(pageParameterName); pageableHandlerMethodArgumentResolver.setOneIndexedParameters(oneIndexed); pageableHandlerMethodArgumentResolver.setSizeParameterName(sizeParameterName); return pageableHandlerMethodArgumentResolver; }
@Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver(); resolver.setPageParameterName("page.page"); resolver.setSizeParameterName("page.size"); resolver.setOneIndexedParameters(true); argumentResolvers.add(resolver); super.addArgumentResolvers(argumentResolvers); }
@PostConstruct public void configureResolvers() { // correct behaviour is: fallback page number must be 0 at all pageableResolver.setFallbackPageable(new PageRequest(0, pagingProperties.getMaxPageSize())); pageableResolver.setOneIndexedParameters(pagingProperties.getOneBased()); pageableResolver.setMaxPageSize(pagingProperties.getMaxPageSize()); pageableResolver.setPageParameterName(pagingProperties.getPageParamName()); pageableResolver.setSizeParameterName(pagingProperties.getSizeParamName()); sortResolver.setSortParameter(pagingProperties.getSortParamName()); } }