У меня есть следующий контроллер на сервере:
@RestController
class PersonController {
final PersonService personService;
@Autowired
PersonController( PersonService personService ){
this.personService = personService
}
@RequestMapping(value="/persons",method=RequestMethod.GET)
Page<Person> list( Pageable pageable){
Page<Person> persons = personService.listAllByPage(pageable);
}
}
Ответ json выглядит так, как ожидалось. Включает в себя содержание и общее количество страниц:
{
"content": [
{
"id": 1234,
"name": "string",
},
],
"pageable": {
"sort": {
"sorted": false,
"unsorted": true
},
"offset": 0,
"pageSize": 5,
"pageNumber": 0,
"paged": true,
"unpaged": false
},
"totalPages": 1,
"totalElements": 1,
"last": true,
"number": 0,
"size": 5,
"sort": {
"sorted": false,
"unsorted": true
},
"numberOfElements": 1,
"first": true
}
Связанный клиентский метод выглядит следующим образом:
public List<PersonDTO> findAllPerPage(final Pageable pageable) throws DataAccessException {
try {
UriComponentsBuilder builder = UriComponentsBuilder.
fromUri(restClient.getServiceURI(PERSON_URL))
.queryParam("page", pageable.getPageNumber())
.queryParam("size", pageable.getPageSize());
ResponseEntity<PagedResources<PersonDTO>> response =
restClient.exchange(
builder.toUriString(),
HttpMethod.GET,
null,
new ParameterizedTypeReference<PagedResources<PersonDTO>>() {
});
return new ArrayList<>(response.getBody().getContent());
} catch (Exception e) {
throw new DataAccessException(e.getMessage(), e);
}
}
Мой вопрос заключается в том, как легко получить totalPages из ответа. Проблема в том, что метаданные ответа имеют нулевое значение, и я не знаю, почему?