如何在 spring-data-rest 中使用 Pageable 作为 get-query 参数? [英] How to use Pageable as get-query parameter in spring-data-rest?
问题描述
我有一个简单的查询控制器,它接受查询参数(如 Person
dto)和一个 Pageable
:
I have a simple query controller that takes query parameters (as Person
dto) and a Pageable
:
@RestController
public class PersonController {
@GetMapping("/persons")
public Object search(org.springframework.data.domain.Pageable pageable, Person form) {
repository.findAll(form, pageable);
}
}
pageable 可以同时采用 sort
和 page
参数,如下所示:
The pageable can take both sort
and page
parameters as follows:
http://localhost:8080/persons?sort=age,desc&page=5
问题:对于排序,我想添加诸如NULLS_LAST
或NULLS_FIRST
之类的顺序提示.
Problem: for the sort, I want to add order hints like NULLS_LAST
or NULLS_FIRST
.
问题:我怎样才能使用查询参数来实现这一点?
Question: how can I achieve this using query params too?
推荐答案
您可以像这样修改 Pageable
对象(例如放入控制器的方法).这是一个带有一个排序字段的示例,但您可以在所有字段上循环并以相同的方式修改 nullsLast/nullsFirst
.请尝试:
You can modify Pageable
object like this (method to put in your controller for example). This is an example with one sort field, but you can loop on all fields and modify nullsLast/nullsFirst
in the same way. Please try :
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));
}
这篇关于如何在 spring-data-rest 中使用 Pageable 作为 get-query 参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!