我正在构建一个 API,它将调用另一个 API 并返回结果。我正在调用的 API 具有分页和排序机制,需要将以下查询参数添加到 URL:
?pageNumber=1&pageSize=20&sortField=id&sortDirection=asc
Run Code Online (Sandbox Code Playgroud)
现在,我希望我的 API 使用 Spring Pageable 对象作为控制器方法中的参数,因此,根据 Spring Docs,传递给我的新 API 的 URL 将是:
?page=1&size=20&sort=id,asc
Run Code Online (Sandbox Code Playgroud)
因此,为了将接收到的 pageable 对象映射到我需要传递给底层 API 的所需查询参数,我需要从 Pageable 对象中检索分页和排序信息。至于它pageSize,pageNumber它非常简单:
pageable.getPageNumber()
pageable.getPageSize()
Run Code Online (Sandbox Code Playgroud)
但是如何检索 sortField 和 sortDirection?
pageable.getSort() 返回 Sort 对象,我无法从中找到检索所需内容的方法 - sortField 值(带有属性名称的字符串)和 sortDirection 值(asc 或 desc)
谢谢
Pageable::getSort会给你一个Sort,那就是一个Iterable的Sort.Order秒。您需要遍历其中的每一个。它们包含您正在寻找的属性。
Sort sort = Sort.by(Sort.Direction.ASC, "abc");
for (Sort.Order order : sort)
{
System.out.println("Property: " + order.getProperty());
System.out.println("Direction: " + order.getDirection());
}
Run Code Online (Sandbox Code Playgroud)
印刷
Property: abc
Direction: ASC
Run Code Online (Sandbox Code Playgroud)