Java Spring PageableArgumentResolver已弃用,如何使用PageableHandlerMethodArgumentResolver?
这是我当前的PageableResolver:Java Spring PageableArgumentResolver已弃用,如何使用PageableHandlerMethodArgumentResolver?,java,spring,spring-mvc,spring-data,Java,Spring,Spring Mvc,Spring Data,这是我当前的PageableResolver: @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { PageableArgumentResolver resolver = new PageableArgumentResolver(); resolver.setFallbackPageable(new PageRequest
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableArgumentResolver resolver = new PageableArgumentResolver();
resolver.setFallbackPageable(new PageRequest(1, 5));
argumentResolvers.add(new ServletWebArgumentResolverAdapter(resolver));
}
@覆盖
public void addArgumentResolver(列出ArgumentResolver){
PageableArgumentResolver解析器=新的PageableArgumentResolver();
setFallbackPageable(新页面请求(1,5));
添加(新的ServletWebArgumentResolveRadepter(解析器));
}
但是PageableArgumentResolver已被弃用,并链接到PageableHandlerMethodArgumentResolver,我想我们可以在没有适配器的情况下注册它,如下所示:
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setFallbackPageable(new PageRequest(0, 5));
argumentResolvers.add(resolver);
}
@覆盖
public void addArgumentResolver(列出ArgumentResolver){
PageableHandlerMethodArgumentResolver解析器=新的PageableHandlerMethodArgumentResolver();
setFallbackPageable(新页面请求(0,5));
ArgumentResolver.add(解析器);
}
首先,新类PageableHandlerMethodArgumentResolver的实现有点不同,因为new PageRequest(1,5)
指的是2。因此我必须使用newpagerequest(0,5)
来显示第一页
但我对这个新对象仍然有问题。当我调用没有参数(page.page或page.size)的URL时,分页栏的第一次加载是完美的。然后,当我想在分页栏上移动时,我们使用两个参数调用相同的url(例如page.page=3和page.size=5),仍然会显示第一页。我认为这个新的解析器需要的不仅仅是这两个参数,这样它就不会激活回退条件。你知道如何使用这个PageableHandlerMethodArgumentResolver吗?我刚刚在这个类的实现中找到了答案。我们现在需要对这个新类进行2项更改:
。?page=2&size=5
”有效。?page=${item.number-1}
而不是。?page=${item.number}
您可以更改bean定义中的参数名称:
<annotation-driven>
<argument-resolvers>
<beans:bean class="org.springframework.data.web.PageableHandlerMethodArgumentResolver">
<beans:property name="maxPageSize" value="7"></beans:property>
<beans:property name="oneIndexedParameters" value="true"></beans:property>
<beans:property name="pageParameterName" value="page.page"></beans:property>
<beans:property name="sizeParameterName" value="page.size"></beans:property>
</beans:bean>
</argument-resolvers>
</annotation-driven>
这将覆盖默认参数名称。您可以使用以下方法更改参数名称:setPageParameterName、setSizeParameterName 如果初始页面为1,则将此setOneIndexedParameters设置为true
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setPageParameterName("page.page");
resolver.setSizeParameterName("page.size");
resolver.setOneIndexedParameters(true);
argumentResolvers.add(resolver);
super.addArgumentResolvers(argumentResolvers);
}
@覆盖
public void addArgumentResolver(列出ArgumentResolver){
PageableHandlerMethodArgumentResolver解析器=新的PageableHandlerMethodArgumentResolver();
resolver.setPageParameterName(“page.page”);
解析器.setSizeParameterName(“页面大小”);
解析器.setOneIndexedParameters(true);
ArgumentResolver.add(解析器);
super.addArgumentResolver(ArgumentResolver);
}
这似乎不起作用。查看参数解析程序的文档,它说:“使用此选项不会覆盖解析处理程序方法参数的内置支持。若要自定义参数解析的内置支持,请直接配置RequestMappingHandlerAdapter。”如下图所示,您不会影响前端。