Spring page parameter of a webpage data page does not work

I am trying to work with a Spring Data webpage. This is described here:

http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/repositories.html#web-pagination

Here is my Java method (Spring Web MVC @Controller):

@RequestMapping(value = "/list", method = RequestMethod.GET) public String list( @PageableDefaults(value = 50, pageNumber = 0) Pageable pageable, Model model) { log.debug("Params: pageNumber={}, pageSize={}", pageable.getPageNumber(), pageable.getPageSize()); ... } 

And here is my Spring configuration:

 <mvc:annotation-driven> <mvc:argument-resolvers> <bean class="org.springframework.data.web.PageableArgumentResolver" /> </mvc:argument-resolvers> </mvc:annotation-driven> 

(The above configuration seems to be the way to do it now; the configuration approach described in the link is deprecated.)

When I actually try to control pagination using the page and page.size , the latter works very well, but the former does not. For example, if I clicked

 http://localhost:8080/myapp/list?page=14&page.size=42 

magazine exit

 Params: pageNumber=0, pageSize=42 

So, I know that the resolver argument comes in, but I'm not sure why it does not resolve the page number. I tried a bunch of other parameter names (e.g. page.number, pageNumber, page.num, etc.), and none of them work.

Does this work for someone else?

+6
source share
3 answers

the page parameter is actually a little unintuitive - page.page , not page , switching to page.page should make it work.

+7
source

PageableArgumentResolver in PageableArgumentResolver , I found that prefix and separator configurable, so you can configure the class so that it is not.

 public class PageableArgumentResolver implements WebArgumentResolver { private static final Pageable DEFAULT_PAGE_REQUEST = new PageRequest(0, 10); private static final String DEFAULT_PREFIX = "page"; private static final String DEFAULT_SEPARATOR = "."; 

in my @Configuration class, I did something different to achieve the default page , size , sort and sortDir .

 @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { PageableArgumentResolver resolver = new PageableArgumentResolver(); resolver.setPrefix(""); resolver.setSeparator(""); argumentResolvers.add(new ServletWebArgumentResolverAdapter(resolver)); } 

Now it works

Http: //: 8080 / MyApp / list page = 14 & size = 42

+2
source

You can override the parameters if you want:

 <mvc:annotation-driven> <mvc:argument-resolvers> <bean class="org.springframework.data.web.PageableHandlerMethodArgumentResolver"> <property name="oneIndexedParameters" value="true"></property> <property name="pageParameterName" value="page"></property> <property name="sizeParameterName" value="size"></property> </bean> </mvc:argument-resolvers> </mvc:annotation-driven> 
0
source

All Articles