You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取分页接口响应中的totalPages?附服务端Controller代码

嘿,这事儿简单得很!你已经通过Spring Data的Page对象拿到了带分页信息的JSON响应,要获取里面的totalPages分两种场景来操作:

1. 前端调用接口时获取totalPages

因为Controller返回的JSON结构里直接包含totalPages字段,你可以直接从响应数据中提取这个值,下面给几个常见前端技术的示例:

  • 原生JavaScript Fetch API:
fetch('/persons')
  .then(res => res.json())
  .then(data => {
    const totalPages = data.totalPages;
    console.log('总页数:', totalPages);
    // 这里可以基于totalPages做分页逻辑,比如渲染页码导航
  });
  • Axios请求示例:
axios.get('/persons')
  .then(res => {
    const totalPages = res.data.totalPages;
    console.log('总页数:', totalPages);
  });
2. 后端代码中获取totalPages

如果是在后端(比如Controller或者Service层)需要用到totalPages值,直接调用Page对象的getTotalPages()方法即可。比如你可以修改Controller,返回自定义响应体或者直接使用这个值:

@RestController
class PersonController {
    final PersonService personService;

    @Autowired
    PersonController(PersonService personService) {
        this.personService = personService;
    }

    @RequestMapping(value="/persons",method=RequestMethod.GET)
    public ResponseEntity<Map<String, Object>> list(Pageable pageable){
        Page<Person> persons = personService.listAllByPage(pageable);
        // 直接获取总页数
        int totalPages = persons.getTotalPages();
        
        // 如果你需要返回自定义结构的响应(可选)
        Map<String, Object> response = new HashMap<>();
        response.put("content", persons.getContent());
        response.put("totalPages", totalPages);
        response.put("totalElements", persons.getTotalElements());
        
        return ResponseEntity.ok(response);
    }
}

另外补充一句:Spring Boot默认会自动将Page对象序列化为包含totalPages、totalElements、content等字段的JSON,只要你的项目引入了Web依赖(默认包含Jackson序列化组件),就不用额外配置啦。

内容的提问来源于stack exchange,提问作者Steve2Fish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:23:21