I have an issue with one case when I want to make a pagination of my search results and one service is creating Page:
repository:
Page<Myth> findAllBy(Pageable pageable);
then the service class:
public Page<Myth> findAllBy(Pageable pageable) {
return mythRepository.findAllBy(pageable);
}
then the controller:
@GetMapping("/allPageable")
@ResponseStatus(OK)
public Page<Myth> findAllMythsPageable(@RequestParam Integer size, @RequestParam Integer pageNumber){
Pageable pageable = new PageRequest(pageNumber, size);
return mythService.findAllBy(pageable);
}
The second service has such entry point on service class:
public List<Myth> findAllPageable(Integer size, Integer pageNumber) {
ResponseEntity<Myth[]> response = restTemplate.getForEntity(ROOT_URI
+ "/allPageable?size="
+ size
+ "&pageNumber="
+ pageNumber,Myth[].class);
return Arrays.asList(response.getBody());
}
Unfortunately I cannot pass Page to a List and I get error that:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of(...)
Could you please help me how can I convert Page object into List so that it can be readible by Thymeleaf webpage (where I have foreach loop)? Or maybe you can advice me how to pass Page object into this:
ResponseEntity<Myth[]> response = restTemplate.getForEntity
Unfortunately when I do:
public Page<Myth> findAllPageable(Integer size, Integer pageNumber) {
ResponseEntity<Page[]> response = restTemplate.getForEntity(ROOT_URI
+ "/allPageable?size="
+ size
+ "&pageNumber="
+ pageNumber,Page[].class);
return response.getBody()[0];
}
I get the same error...
Can I use Page object in Thymeleaf?
Thanks in advance for help!
Piotr