【问题标题】:Spring rest controller and paging弹簧休息控制器和分页
【发布时间】:2016-05-08 01:42:36
【问题描述】:

我使用 spring 4.2 并休息,我想使用分页。

spring rest控制器使用分页的方法是什么?

@RequestMapping(value = "/members/{memberId}/payments", method = RequestMethod.GET)
    public Page<PaymentDto> getPaymentByMemberId(@PathVariable("memberId") Long memberId, Pageable pageable) {
        return paymentService.getPaymentByMemberId(memberId, pageable);
    }

这是管理这个的好方法吗?

如果应用程序中的某些区域,我们不想使用分页,我们需要创建另一个 url?

如果我想为会员支付所有款项,我会这样做:

/members/{memberId}/payments

对于分页,有一种方法可以让 spring 执行如下操作:

/members/{memberId}/payments?pageNumber=1&amp;PageSize=10

【问题讨论】:

  • 你找到如何使用Pageable了吗?

标签: spring spring-restcontroller


【解决方案1】:

一种方法是:

@RequestMapping(value = "/members/{memberId}/payments", method = RequestMethod.GET) 
public List<PaymentDto> getPaymentByMemberId(@PathVariable("memberId") Long memberId, @RequestParam(value = "pageNumber", required = false) final Integer pageNumber,@RequestParam(value = "pageSize", required = false) final Integer pageSize) {
                PageRequest pageReq = new PageRequest((pageNumber == null ? 0 : pageNumber), (pageSize == null ? 0 : pageSize));
                Page<PaymentDto> page = paymentService.getPaymentByMemberId(memberId, pageReq);
                return page.getContent();
        }

【讨论】:

    【解决方案2】:

    你需要为你的控制器写注解@RestController

    @RestController
    public class PaymentController {
    ...
        @RequestMapping(value = "/members/{memberId}/payments", method = RequestMethod.GET)
        public Page<PaymentDto> getPaymentByMemberId(@PathVariable("memberId") Long memberId, Pageable pageable) {
            return paymentService.getPaymentByMemberId(memberId, pageable);
        }
    }
    

    请求示例:/members/12345/payments?page=0&size=50

    【讨论】:

      猜你喜欢
      • 2020-05-16
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      相关资源
      最近更新 更多