On Wed, 13 Feb 2013 10:08:31 +0100 Eric Chatellier <chatellier@codelutin.com> wrote:
final List<Lot> lots = lotService.listLots(getSession().getUtilisateur()); LoadableDetachableSortableListDataProvider<Lot> lotsDataProvider = new LoadableDetachableSortableListDataProvider<Lot>(lots, getSession().getLocale());
Donc la liste est récupérée du service en une seule opération et cela devrait suffire à l'afficher. Cependant, dans le provider la methode getModel() est surchargée comme cela: public GenericLoadableDetachableModel<M> model(M object) { // return new Model<M>(object); return new GenericLoadableDetachableModel<M>(object); }
C'est pourquoi j'ai créé un SimpleSortableListDataProvider qui a les même caractéristique que LoadableDetachableSortableListDataProvider sauf qu'il utilise les objets de la liste plutôt que de rechargé les objets depuis la base. Cela permet aussi de ne plus avoir de contrainte sur le type d'objet de la liste (précédemment AbstractModel) Donc si personne ne voit d'intérêt de recharger l'objet de la base plutôt que de prendre celui de la liste, je préconiserais d'utiliser ce SimpleSortableListDataProvider pour les tables, ce qui évite potentiellement le n+1 requêtes. -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com