Nous avons implémenté un chargement de grille paresseux basé sur l'article Vaadin Blog et nous souhaitons ajouter des filtres pour certaines colonnes de grille. Dans ce cas, nous effectuons un chargement paresseux en définissant une fonction lambda en tant que CallbackDataProvider. Veuillez consulter le code ci-dessous. Comment peut-on combiner CallbackDataProvider avec le filtrage?Vaadin Grid - Plusieurs filtres avec chargement Lazy
Selon ce StackOverflow post, l'auteur pourrait résoudre ce problème en utilisant ConfigurableFilterDataProvider comme un wrapper sur CallbackDataProvider. Malheureusement, il n'a pas partagé d'autres codes. Pouvez-vous s'il vous plaît nous fournir des conseils pour y parvenir?
Notre code est entièrement basé sur l'article du blog et se présente comme suit:
public class Person {
private Long id;
private String firstName;
private String lastName;
private String email;
... getter and setters ...
}
public class PersonService {
public List<Person> findAll(int offset, int limit) { ... }
public int count() { ... }
}
Réglage du DataProvider:
grid.setDataProvider(
(sortOrders, offset, limit) -> {
Map<String, Boolean> sortOrder = sortOrders.stream().collect(
Collectors.toMap(
sort -> sort.getSorted(),
sort -> SortDirection.ASCENDING.equals(sort.getDirection())
)
);
return service.findAll(offset, limit, sortOrder).stream();
},
() -> service.count()
);
Merci. J'ai résolu le problème avec votre poste en combinaison avec https://vaadin.com/docs/v8/framework/datamodel/datamodel-providers.html#lazy-filtering. – Fabian
Mon code provient d'un système générique et je ne voulais pas le simplifier pour DAO, alors peut-être que quelqu'un le trouvera plus utile :) – avix