50 votes

Conversion de liste en page au printemps

J'essaye de convertir la liste en page au printemps. Je l'ai converti en utilisant

nouveau PageImpl (utilisateurs, paginable, users.size ());

Mais maintenant, j'ai des problèmes avec le tri et la pagination lui-même. Lorsque j'essaie de transmettre la taille et la page, la pagination ne fonctionne pas.

Voici le code que j'utilise.

Mon contrôleur

     public ResponseEntity<User> getUsersByProgramId(
        @RequestParam(name = "programId", required = true) Integer programId Pageable pageable) {

    List<User> users = userService.findAllByProgramId(programId);
    Page<User> pages = new PageImpl<User>(users, pageable, users.size());

    return new ResponseEntity<>(pages, HttpStatus.OK);
}
 

Voici mon utilisateur Repo

 public interface UserRepo extends JpaRepository<User, Integer>{

public List<User> findAllByProgramId(Integer programId);
 

Voici mon service

     public List<User> findAllByProgramId(Integer programId);
 

92voto

shilaimuslm Points 429

J'ai rencontré la même question. J'ai résolu cela en utilisant subList, c'est-à-dire:

 int start = pageable.getOffset();
int end = (start + pageable.getPageSize()) > users.size() ? users.size() : (start + pageable.getPageSize());
Page<User> pages = new PageImpl<User>(users.subList(start, end), pageable, users.size());
 

Peut-être un peu stupide, l'espoir peut vous aider. :)

4voto

naveen kumar Points 11
Try This:

public Page<Patient> searchPatientPage(SearchPatientDto patient, int page, int size){
        List<Patient> patientsList = new ArrayList<Patient>();
        Set<Patient> list=searchPatient(patient);
        patientsList.addAll(list);
        int start =  new PageRequest(page, size).getOffset();
        int end = (start + new PageRequest(page, size).getPageSize()) > patientsList.size() ? patientsList.size() : (start + new PageRequest(page, size).getPageSize());

        return new PageImpl<Patient>(patientsList.subList(start, end), new PageRequest(page, size), patientsList.size());
    }

1voto

RBuser2769569 Points 22
//1) For a boot application create a paging repository interface
public interface PersonRepository extends PagingAndSortingRepository<Person, 
String> {
// Common CURD method are automatically implemented
}
//2) create a service Interface
public interface PersonService {
    Page<Person> listAllByPage(Pageable pageable); // Use common CURD findAll() method
    Page<Object> listSpecByPage(Pageable pageable, String x);

}
//3) create a service Impl Class of service interface
@Service
public class PersonServiceImpl implements PersonService {

    final PersonRepository personRepository;

    @Autowired
    PersonServiceImpl(PersonRepository personRepository){
    this.personRepository = personRepository;
    }

    @Override
    public Page<Person> listAllByPage(Pageable pageable) {
          return personRepository.findAll(pageable);
    }
    @Override
    public Page<Object> listSpecByPage(Pageable pageable, String path) {
        List<Object> objectlist = new ArrayList<Object>();
        // Do your process to get output in a list by using node.js run on a *js file defined in 'path' varriable
        Page<Object> pages1 = new PageImpl<Object>(objectlist, pageable, objectlist.size());
        return pages1;
    }

}
//4) write your controller
public class PersonController {

    final PersonService personService;

    @Autowired
    PersonController( PersonService personService ){
        this.personService = personService;
    }

    @GetMapping("/get") // Use of findALL() function
    Page<Person> listed( Pageable pageable){
        Page<Person> persons = personService.listAllByPage(pageable);
        return persons;
    } 
    @GetMapping("/spec") // Use of defined function
    Page<Object> listSpec( Pageable pageable, String path){
        Page<Object> obj = personService.listSpecByPage(pageable, path);
        return obj;
   } 

}

0voto

Borgy Manotoy Points 914

Avez-vous essayé d'étendre votre référentiel à PagingAndSortingRepository ?

 public interface UserRepo extends PagingAndSortingRepository<Ticket, Integer> {
    Page<User> findAllByProgramId(Integer programId, Pageable pageable);
}
 

Un service

 Page<User> findAllByProgramId(Integer programId, Pageable pageable);
 

Je suppose que vous utilisez l'interface du service:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X