Spring分页不起作用

标签 spring spring-mvc spring-boot

Controller :

@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)。
来自日志:

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

如何让它发挥作用?

最佳答案

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

使用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]

关于Spring分页不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38839023/

相关文章:

Hibernate 4 (Jboss as 7) 无法自动检测实体并插入 PersistenceUnit,导致 `unknown entity` 异常

java - AOP重定向调用

java - 序列化日期 : Swagger and Spring-MVC

java - 在 Spring 3.2 中禁用路径变量中的空格修剪

java - 无法启动 Spring Boot 应用程序

spring - 如何在 Spring Boot Thymeleaf 模板引擎中链接另一个 html 页面?

java - 用于 API 不同部分的多个 ObjectMapper

java - 我应该测试 Spring Boot Application 的 main() 方法吗?如何测试?

spring - 如何使用 Spring WebFlux 返回 404

java - 将 Spring REST 服务与 Wicket 结合起来