tutorial sirve requestmapping que proyecto para mvc framework español ejemplo crear spring spring-mvc spring-boot pagination spring-data-jpa

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:

http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/web/PageableHandlerMethodArgumentResolver.html#setOneIndexedParameters-boolean-

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 }