次のコントローラーメソッドがあります。
@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));
}
最初のメソッドは、すべての顧客リソースをページとして返します。
2 番目のものもページ化された結果を返しますが、q
フィルターするクエリ パラメーターを提供するオプションがあります。
検索メソッドからの JSON HATEOAS 応答には、次のような次のページへのリンクが含まれています。
{
"rel": "next",
"href": "http://localhost:8080/api/customers/search?page=1&size=10{&sort}"
}
問題は、ここでq
クエリ パラメータが失われることです。
ここで を別の方法で使用する必要がPagedResourcesAssembler
ありますか?