Spring 如何将自定义查询参数添加到分页hateoas结果中的下一个/上一个链接?

Spring 如何将自定义查询参数添加到分页hateoas结果中的下一个/上一个链接?,spring,spring-data,spring-data-jpa,spring-hateoas,Spring,Spring Data,Spring Data Jpa,Spring Hateoas,我有以下控制器方法: @RequestMapping(method = GET, produces = APPLICATION_JSON_VALUE) @Transactional(readOnly = true) public ResponseEntity list(Pageable pageable, PagedResourcesAssembler pagedResourcesAssembler) { Page<Customer> customers = customer

我有以下控制器方法:

@RequestMapping(method = GET, produces = APPLICATION_JSON_VALUE)
@Transactional(readOnly = true)
public ResponseEntity list(Pageable pageable, PagedResourcesAssembler pagedResourcesAssembler) {
    Page<Customer> customers = customerRepository.findAll(pageable);
    return ResponseEntity.ok().body(pagedResourcesAssembler.toResource(customers, customerResourceAssembler));
}

@RequestMapping(value = "/search", method = GET, produces = APPLICATION_JSON_VALUE)
@Transactional(readOnly = true)
public ResponseEntity search(@RequestParam("q") String q, Pageable pageable, PagedResourcesAssembler pagedResourcesAssembler) {
    Specification spec = where(..some specs..);
    Page<Customer> customers = customerRepository.findAll(spec, pageable);
    return ResponseEntity.ok().body(pagedResourcesAssembler.toResource(customers, customerResourceAssembler));
}
问题在于
q
查询参数丢失


我是否应该在这里以不同的方式使用
PagedResourcesAssembler

我认为我通过手动创建链接找到了解决方案;见下面的例子

@RequestMapping(value = "/search", method = GET, produces = APPLICATION_JSON_VALUE)
@Transactional(readOnly = true)
public ResponseEntity search(@RequestParam("q") String q, Pageable pageable, PagedResourcesAssembler pagedResourcesAssembler) {

    // create link to search method with q; pass link as 3th param to paged resource assembler's toResource method
    Link link = linkTo(methodOn(CustomerController.class).search(q, pageable, pagedResourcesAssembler)).withSelfRel();

    Specification spec = where(..some specs..);
    Page<Customer> customers = customerRepository.findAll(spec, pageable);
    return ResponseEntity.ok().body(pagedResourcesAssembler.toResource(customers, customerResourceAssembler, link));
}
@RequestMapping(value=“/search”,method=GET,products=APPLICATION\u JSON\u value)
@事务(只读=真)
公共响应属性搜索(@RequestParam(“q”)字符串q,可分页可分页,PagedResourcesAssembler PagedResourcesAssembler){
//使用q创建指向搜索方法的链接;将链接作为分页资源汇编程序的toResource方法的第三个参数传递
Link Link=linkTo(methodOn(CustomerController.class).search(q,pageable,pagedResourcesAssembler)).withSelfRel();
规范规范=其中(…某些规范…);
Page customers=customerRepository.findAll(规范,可分页);
返回ResponseEntity.ok().body(pagedResourcesAssembler.toResource(customers,CustomerResourcesAssembler,link));
}

扩展自我..它处理下一个/上一个吗?是的@ChrisDaMour它处理
@RequestMapping(value = "/search", method = GET, produces = APPLICATION_JSON_VALUE)
@Transactional(readOnly = true)
public ResponseEntity search(@RequestParam("q") String q, Pageable pageable, PagedResourcesAssembler pagedResourcesAssembler) {

    // create link to search method with q; pass link as 3th param to paged resource assembler's toResource method
    Link link = linkTo(methodOn(CustomerController.class).search(q, pageable, pagedResourcesAssembler)).withSelfRel();

    Specification spec = where(..some specs..);
    Page<Customer> customers = customerRepository.findAll(spec, pageable);
    return ResponseEntity.ok().body(pagedResourcesAssembler.toResource(customers, customerResourceAssembler, link));
}