Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring PageableArgumentResolver已弃用,如何使用PageableHandlerMethodArgumentResolver?_Java_Spring_Spring Mvc_Spring Data - Fatal编程技术网

Java Spring PageableArgumentResolver已弃用,如何使用PageableHandlerMethodArgumentResolver?

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

这是我当前的PageableResolver:

@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”。“
    。?page=2&size=5
    ”有效
  • 因为第1页指的是第2页。现在,我们必须在pagination.jsp中重新定义参数:
    。?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。”如下图所示,您不会影响前端。