org.springframework.data.web

## Class PageableHandlerMethodArgumentResolverSupport

- java.lang.Object
- - org.springframework.data.web.PageableHandlerMethodArgumentResolverSupport

Direct Known Subclasses:
  PageableHandlerMethodArgumentResolver, ReactivePageableHandlerMethodArgumentResolver

    public abstract class PageableHandlerMethodArgumentResolverSupport
    extends Object

Base class providing methods for handler method argument resolvers to create paging information from web requests and thus allows injecting `Pageable` instances into controller methods. Request properties to be parsed can be configured. Default configuration uses request parameters beginning with `DEFAULT_PAGE_PARAMETER` `DEFAULT_QUALIFIER_DELIMITER`.

Since:
  2.2
Author:
  Mark Paluch, Vedran Pavic
See Also:
  `PageableHandlerMethodArgumentResolver`, `ReactivePageableHandlerMethodArgumentResolver`

### Constructor Summary

Constructors
Constructor and Description
`PageableHandlerMethodArgumentResolverSupport()`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected int` `getMaxPageSize()` Retrieves the maximum page size to be accepted.
`protected Pageable` `getPageable(MethodParameter methodParameter, String pageString, String pageSizeString)`
`protected String` `getPageParameterName()` Retrieves the parameter name to be used to find the page number in the request.
`protected String` `getParameterNameToUse(String source, MethodParameter parameter)` Returns the name of the request parameter to find the `Pageable` information in.
`protected String` `getSizeParameterName()` Retrieves the parameter name to be used to find the page size in the request.
`boolean` `isFallbackPageable(Pageable pageable)` Returns whether the given `Pageable` is the fallback one.
`protected boolean` `isOneIndexedParameters()` Indicates whether to expose and assume 1-based page number indexes in the request parameters.
`void` `setFallbackPageable(Pageable fallbackPageable)` Configures the `Pageable` to be used as fallback in case no `PageableDefault` or `PageableDefault` (the latter only supported in legacy mode) can be found at the method parameter to be resolved.
`void` `setMaxPageSize(int maxPageSize)` Configures the maximum page size to be accepted.
`void` `setOneIndexedParameters(boolean oneIndexedParameters)` Configures whether to expose and assume 1-based page number indexes in the request parameters.
`void` `setPageParameterName(String pageParameterName)` Configures the parameter name to be used to find the page number in the request.
`void` `setPrefix(String prefix)` Configures a general prefix to be prepended to the page number and page size parameters.
`void` `setQualifierDelimiter(String qualifierDelimiter)` The delimiter to be used between the qualifier and the actual page number and size properties.
`void` `setSizeParameterName(String sizeParameterName)` Configures the parameter name to be used to find the page size in the request.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### PageableHandlerMethodArgumentResolverSupport

    public PageableHandlerMethodArgumentResolverSupport()

### Method Detail

#### setFallbackPageable

    public void setFallbackPageable(Pageable fallbackPageable)

Configures the `Pageable` to be used as fallback in case no `PageableDefault` or `PageableDefault` (the latter only supported in legacy mode) can be found at the method parameter to be resolved.

If you set this to Optional#empty(), be aware that you controller methods will get null handed into them in case no `Pageable` data can be found in the request. Note, that doing so will require you supply bot the page and the size parameter with the requests as there will be no default for any of the parameters available.

Parameters:
  `fallbackPageable` - the `Pageable` to be used as general fallback.

#### isFallbackPageable

    public boolean isFallbackPageable(Pageable pageable)

Returns whether the given `Pageable` is the fallback one.

Parameters:
  `pageable` - can be null.
Returns:

#### setMaxPageSize

    public void setMaxPageSize(int maxPageSize)

Configures the maximum page size to be accepted. This allows to put an upper boundary of the page size to prevent potential attacks trying to issue an `OutOfMemoryError`. Defaults to `DEFAULT_MAX_PAGE_SIZE`.

Parameters:
  `maxPageSize` - the maxPageSize to set

#### getMaxPageSize

    protected int getMaxPageSize()

Retrieves the maximum page size to be accepted. This allows to put an upper boundary of the page size to prevent potential attacks trying to issue an `OutOfMemoryError`. Defaults to `DEFAULT_MAX_PAGE_SIZE`.

Returns:
  the maximum page size allowed.

#### setPageParameterName

    public void setPageParameterName(String pageParameterName)

Configures the parameter name to be used to find the page number in the request. Defaults to `page`.

Parameters:
  `pageParameterName` - the parameter name to be used, must not be null or empty.

#### getPageParameterName

    protected String getPageParameterName()

Retrieves the parameter name to be used to find the page number in the request. Defaults to `page`.

Returns:
  the parameter name to be used, never null or empty.

#### setSizeParameterName

    public void setSizeParameterName(String sizeParameterName)

Configures the parameter name to be used to find the page size in the request. Defaults to `size`.

Parameters:
  `sizeParameterName` - the parameter name to be used, must not be null or empty.

#### getSizeParameterName

    protected String getSizeParameterName()

Retrieves the parameter name to be used to find the page size in the request. Defaults to `size`.

Returns:
  the parameter name to be used, never null or empty.

#### setPrefix

    public void setPrefix(String prefix)

Configures a general prefix to be prepended to the page number and page size parameters. Useful to namespace the property names used in case they are clashing with ones used by your application. By default, no prefix is used.

Parameters:
  `prefix` - the prefix to be used or null to reset to the default.

#### setQualifierDelimiter

    public void setQualifierDelimiter(String qualifierDelimiter)

The delimiter to be used between the qualifier and the actual page number and size properties. Defaults to `_`. So a qualifier of `foo` will result in a page number parameter of `foo_page`.

Parameters:
  `qualifierDelimiter` - the delimiter to be used or null to reset to the default.

#### setOneIndexedParameters

    public void setOneIndexedParameters(boolean oneIndexedParameters)

Configures whether to expose and assume 1-based page number indexes in the request parameters. Defaults to false, meaning a page number of 0 in the request equals the first page. If this is set to true, a page number of 1 in the request will be considered the first page.

Parameters:
  `oneIndexedParameters` - the oneIndexedParameters to set

#### isOneIndexedParameters

    protected boolean isOneIndexedParameters()

Indicates whether to expose and assume 1-based page number indexes in the request parameters. Defaults to false, meaning a page number of 0 in the request equals the first page. If this is set to true, a page number of 1 in the request will be considered the first page.

Returns:
  whether to assume 1-based page number indexes in the request parameters.

#### getPageable

    protected Pageable getPageable(MethodParameter methodParameter,
                                   @Nullable
                                   String pageString,
                                   @Nullable
                                   String pageSizeString)

#### getParameterNameToUse

    protected String getParameterNameToUse(String source,
                                           @Nullable
                                           MethodParameter parameter)

Returns the name of the request parameter to find the `Pageable` information in. Inspects the given `MethodParameter` for `Qualifier` present and prefixes the given source parameter name with it.

Parameters:
  `source` - the basic parameter name.
  `parameter` - the `MethodParameter` potentially qualified.
Returns:
  the name of the request parameter.