如何在 spring-data-rest 中使用 Pageable 作为 get-query 参数?

How to use Pageable as get-query parameter in spring-data-rest?

我有一个简单的查询控制器,它接受查询参数(如 Person dto)和一个 Pageable:

@RestController
public class PersonController {
   @GetMapping("/persons")
   public Object search(org.springframework.data.domain.Pageable pageable, Person form) {
       repository.findAll(form, pageable);
   }
}

pageable 可以同时使用 sortpage 参数,如下所示:

http://localhost:8080/persons?sort=age,desc&page=5

问题:对于排序,我想添加顺序提示,例如 NULLS_LASTNULLS_FIRST

问题:如何使用查询参数实现此目的?

尝试做类似的事情:

pageable.getSort().and(Sort.by(new Sort.Order(Sort.Direction.DESC, "age", Sort.NullHandling.NULLS_LAST)));

您可以像这样修改 Pageable 对象(例如放入控制器的方法)。这是一个只有一个排序字段的示例,但您可以在所有字段上循环并以相同的方式修改 nullsLast/nullsFirst。请尝试:

private Pageable customSort(Pageable pageable) {
    Sort sort = pageable.getSort();
    Order order = sort.iterator().next();
    List<Order> orders = new ArrayList<>();
    // nullsFirst or nullsLast
    orders.add(new Order(order.getDirection(),order.getProperty()).nullsFirst());
    return PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(orders));
}