本文介绍了春季分页不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

控制器:

@RestController
@RequestMapping("/api")
public class TestResource {

    @RequestMapping(value="/test",
        method = RequestMethod.GET,
        produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<List<Integer>> test(Pageable pageable) {
        List<Integer> init = new ArrayList<>(Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9,10}));
        return ResponseEntity.ok(new PageImpl<>(init, pageable, init.size()).getContent());
    }
}

请求 /api/test?page=1&size=2 返回整个初始化列表(从 1 到 10).
来自日志:

Request /api/test?page=1&size=2 returns entire init list (from 1 to 10).
From logs:

输入:com.test.rest.TestResource.test() with argument[s] = [Page request [number: 1, size 2, sort: null]]

如何让它发挥作用?

推荐答案

据我所知,Page 仅适用于存储库,因此我找到了解决方案:

As I understood, Page works with repositories only, so I found a solution:

使用 org.springframework.beans.support.PagedListHolder

Use org.springframework.beans.support.PagedListHolder

public ResponseEntity<List<Integer>> getIntegers(Pageable pageable) {
    List<Integer> init = new ArrayList<>(Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9,10}));
    PagedListHolder<Integer> holder = new PagedListHolder<>(init);
    holder.setPage(pageable.getPageNumber());
    holder.setPageSize(pageable.getPageSize());
    return ResponseEntity.ok(holder.getPageList());
}

请求 /api/test?page=1&size=2 返回 [3,4]

Request /api/test?page=1&size=2 returns [3,4]

这篇关于春季分页不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-29 20:55
查看更多