在Spring MVC端点中使用多个Pageable参数

时间:2017-04-11 04:26:20

标签: spring spring-mvc spring-data spring-data-jpa

我有这样的情况

@Autowired
private CustomerRepository repo;

@RequestMapping("/")
public Page<Customer> getDocuments(@Qualifier("bar") Pageable pageable,
                                   @Qualifier("foo")Pageable pageable2)
{
    return repo.findAll(pageable,pageable2.getOffset(), pageable2.getPageSize());
}

但效果不佳。我的问题是,我如何区分参数值。

为了实现上述场景,我不得不将我的方法更改为:

@RequestMapping("/")
public Page<Customer> getDocuments(Pageable pageable,
                                   @RequestParam(value="from", defaultValue="0") int offSet,
                                   @RequestParam(value="length", defaultValue="3") int length)
{
    return repo.findAll(pageable, offSet, length);
}

2 个答案:

答案 0 :(得分:3)

最后,我找到了答案。我所做的是绝对正确的,但我在URL中传递了错误的参数。

简而言之,如果您传递两个Pageable,则必须有一个@Qualifier,您需要相应地设置您的请求参数。

我之前在网址http://localhost:8080/?page=0&size=2&page=0&size=3中传递的内容 正确的网址为http://localhost:8080/?bar_page=0&bar_size=2&foo_page=0&foo_size=3

PS:无论是谁投票我的问题,我仍然对他/他们生气。

答案 1 :(得分:0)

我认为将Spring bean作为参数传递给rest资源是错误的想法。如果需要从Bean访问这些值,那么它应该在资源内部访问,假设bean已经初始化。

`@Autowired     私人CustomerRepository仓库;

@Autowired
@Qualifier("bar")
Pageable pageable;

@Autowired
@Qualifier("foo")
Pageable pageable2;

@RequestMapping("/")
 public Page<Customer> getDocuments(){

   return     repo.findAll(pageable,pageable2.getOffset(),pageable2.getPageSize());
}`