sirve - spring jsp
Cómo configurar la paginación de arranque de primavera a partir de la página 1, no 0 (2)
Spring Boot usará Spring Data debajo de las cubiertas.
La clase Spring Data que necesita configurar es la siguiente:
org.springframework.data.web.PageableHandlerMethodArgumentResolver
y en particular el siguiente método:
Esto le permitirá usar su paginación de IU actual, es decir, con la primera página = 1.
En una aplicación de arranque creo que la configuración puede parecerse a algo así:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setOneIndexedParameters(true);
argumentResolvers.add(resolver);
super.addArgumentResolvers(argumentResolvers);
}
}
boot (1.4.0) "En página" para la paginación. Funciona bien sin ningún problema. Pero de forma predeterminada, el valor de la página comienza desde "0", pero en el front-end, el valor de la página comienza desde "1". Entonces, ¿hay algún enfoque estándar para incrementar el valor en lugar de incrementar manualmente el número de página dentro del código?
public Page<Device> find(DeviceFindCommand deviceFindCommand, Pageable pageable){
//page = 0 //Actual is 0, Expected increment by 1.
}
Cualquier ayuda debería ser apreciable.
Después de implementar las respuestas de Alan con los siguientes problemas,
1) Todavía puedo acceder a la página cero que devuelve la primera página (no sé si esto es problema o no, pero quiero obtener una mejor claridad).
http: // localhost: 8180 / api / v1 / books /? page = 3 & size = 2
Respuesta
{
"content": [
{
"id": "57da9eadbee83fb037a66029",
.
.
.
}{
.
.
.
}
],
"last": false,
"totalElements": 5,
"totalPages": 3,
"size": 2,
"number": 2, //strange always getting 1 less than page number.
"sort": null,
"first": true,
"numberOfElements": 2
}
2) "número": 2, en la respuesta siempre obteniendo uno menos que el número de página. Debería devolver el índice de la página actual.
Para obtener un mejor resultado, debe extender RepositoryRestMvcConfiguration, como a continuación
@Configuration
public class RespositoryConfiguration extends RepositoryRestMvcConfiguration {
@Override
@Bean
public HateoasPageableHandlerMethodArgumentResolver pageableResolver() {
HateoasPageableHandlerMethodArgumentResolver resolver = super.pageableResolver();
resolver.setOneIndexedParameters(true);
return resolver;
}
}
Luego obtendrá todos los enlaces y la información de paginación correctos, excepto ''número'', que es uno menos. Ver el resultado para la página = 1,
"_links": {
"first": {
"href": "http://localhost:8080/user/user?page=1&size=5"
},
"self": {
"href": "http://localhost:8080/user/user"
},
"next": {
"href": "http://localhost:8080/user/user?page=2&size=5"
},
"last": {
"href": "http://localhost:8080/user/user?page=2&size=5"
}
},
"page": {
"size": 5,
"totalElements": 6,
"totalPages": 2,
"number": 0
}