Use Pageable.unpaged(sort) for sorted unpaged pageable.
The (Reactive)PageableHandlerMethodArgumentResolver now falls back to a unpaged Pageable instance with a resolved sort if the the resolved Pageable is unpaged. Fixes: GH-3094 Original pull request: GH-2865
This commit is contained in:
committed by
Oliver Drotbohm
parent
2c1f06c6eb
commit
7ecdbdf3d8
@@ -33,6 +33,7 @@ import org.springframework.web.method.support.ModelAndViewContainer;
|
||||
* @author Nick Williams
|
||||
* @author Mark Paluch
|
||||
* @author Christoph Strobl
|
||||
* @author Yanming Zhou
|
||||
* @since 1.6
|
||||
*/
|
||||
public class PageableHandlerMethodArgumentResolver extends PageableHandlerMethodArgumentResolverSupport
|
||||
@@ -83,7 +84,12 @@ public class PageableHandlerMethodArgumentResolver extends PageableHandlerMethod
|
||||
Pageable pageable = getPageable(methodParameter, page, pageSize);
|
||||
|
||||
if (sort.isSorted()) {
|
||||
return PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort);
|
||||
if (pageable.isPaged()) {
|
||||
pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort);
|
||||
}
|
||||
else {
|
||||
pageable = Pageable.unpaged(sort);
|
||||
}
|
||||
}
|
||||
|
||||
return pageable;
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.springframework.web.server.ServerWebExchange;
|
||||
*
|
||||
* @since 2.2
|
||||
* @author Mark Paluch
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
public class ReactivePageableHandlerMethodArgumentResolver extends PageableHandlerMethodArgumentResolverSupport
|
||||
implements SyncHandlerMethodArgumentResolver {
|
||||
@@ -75,9 +76,17 @@ public class ReactivePageableHandlerMethodArgumentResolver extends PageableHandl
|
||||
String pageSize = queryParams.getFirst(getParameterNameToUse(getSizeParameterName(), parameter));
|
||||
|
||||
Sort sort = sortResolver.resolveArgumentValue(parameter, bindingContext, exchange);
|
||||
|
||||
Pageable pageable = getPageable(parameter, page, pageSize);
|
||||
|
||||
return sort.isSorted() ? PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort) : pageable;
|
||||
if (sort.isSorted()) {
|
||||
if (pageable.isPaged()) {
|
||||
pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort);
|
||||
}
|
||||
else {
|
||||
pageable = Pageable.unpaged(sort);
|
||||
}
|
||||
}
|
||||
|
||||
return pageable;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user