Bonjour,
Je me remets aux experts de developpez.com car j'ai pas trouvé la solution à mon problème.
J'ai un p:datatable où les colonnes sont créés dynamiquement et j'utilise en même temps le lazy loading en espérant accélerer la navigation entre les différentes pages du datatable.
Pour des raisons de complexité, je suis obligé de loader les infos à partir de la mémoire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <p:dataTable id="resultDatatable" var="op" widgetVar="resultDatatable" styleClass="styleTable" lazy="true" value="#{myBean.lazyResults}" emptyMessage="Aucune opération trouvée." paginator="true" rows="10"> <p:columns var="column" value="#{myBean.columns}" columnIndexVar="colIndex" sortBy="#{op[column.property]}"> <f:facet name="header"> <h:outputText value="#{column.header}" /> </f:facet> <h:outputText value="#{op.attributes.get(column.property)}" /> </p:columns> </p:dataTable>
Le problème c'est au niveau du rendu du datatable qui prend en moyenne 5 secondes pour afficher une page alors que les données sont déjà récupérées à partir de la mémoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public class OperationLazyDataModel extends LazyDataModel<OperationSearchModel> { private List<OperationSearchModel> datasource; public OperationLazyDataModel(List<OperationSearchModel> datasource) { super(); this.datasource = datasource; } @Override public List<OperationSearchModel> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) { if (sortField != null) { try { Collections.sort(datasource, new LazySorter(sortField, sortOrder)); } catch (Exception e) { } } int dataSize = datasource.size(); setRowCount(dataSize); if (dataSize > pageSize) { try { return datasource.subList(first, first + pageSize); } catch (Exception e) { return datasource.subList(first, first + (dataSize % pageSize)); } } else return datasource; } }
J'ai besoin de comprendre pourquoi ce temps de rendu.
J'utilise PF4 (je ne peux upgrader pour eviter des regressions sur d'autres parties de l'application).
Merci pour vos réponses.
Partager