Bonjour,
mon problème du jour concerne le tri et le filtrage sur une rich:extendeddatatable. La table est remplie en fonction de filtres situés au-dessus de la table. Celà fonctionne bien.
Le problème vient du tri/filtrage sur la table : il semblerait (constaté en mode debugger) que le getter sur les données de la table soit appelé AVANT la mise à jour du modèle (ce qui donne que ma table après tri/filtrage contient toutes mes données, peu importe les valeurs de filtrage). Celà correspond a priori au comportement habituel des listeners, mais le problème là est que je n'ai (à ma connaissance) pas la main sur ce listener pour, par exemple, le reposter afin de le traiter au cours d'une phase ultérieure (et donc après la màj du modèle).
Donc je suis embêté car je ne sais pas comment faire en sorte que le rechargement de la table lors du tri/filtrage se fasse après la mise à jour du modèle.
Si quelqu'un a une idée...
Un aperçu du code (simplifié.. avec peut-être des erreurs de simplification!) :
Pour le bean, il n'y a rien de sorcier, donc je ne pense pas que ce soit la peine de copier le code.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 <h:form id="myForm"> <!-- LES FILTRES --> <h:outputText value="#{bundle.filter1}" /> <h:selectBooleanCheckbox id="selectFilter1" value="#{monBean.filter1choice}"/> <h:inputText value="#{monBean.filter1param}"/> <h:outputText value="#{bundle.filter2}" /> <h:selectBooleanCheckbox id="selectFilter2" value="#{monBean.filter2choice}"/> <h:outputText value="#{bundle.filter3}" /> <h:selectBooleanCheckbox id="selectFilter3" value="#{monBean.filter1choice}"/> <h:inputText value="#{monBean.filter3param}"/> <!-- LE BOUTON QUI APPLIQUE LES FILTRES --> <div class="button-wrapper"> <a4j:commandLink reRender="myForm:resultList" action="#{monBean.doReloadResultList}"> <span><h:outputText value="#{bundle.apply_filter_button}" /> </span> </a4j:commandLink> </div> <!-- LES RESULTATS DU FILTRAGE --> <rich:extendedDataTable id="resultList" value="#{monBean.listResult}" var="result" rowKeyVar="row" rows="#{monBean.nbResults}" binding="#{monBean.resultsDataTable}"> <f:facet name="header"> <h:outputText value="titre"/> </f:facet> <rich:column id="SelectColumn"> <h:selectBooleanCheckbox onclick="someScript()" id="checkIt" value="#{result.selected}"/> </rich:column> <rich:column sortBy="#{result.lastname}" filterBy="#{result.lastname}" sortOrder="ASCENDING"> <f:facet name="header"> <h:outputText id="lastname" value="#{bundle.lastame}" /> </f:facet> <h:outputText value="#{result.lastname}" /> </rich:column> <rich:column sortBy="#{result.firstname}" filterBy="#{result.firstname}"> <f:facet name="header"> <h:outputText id="firstname" value="#{bundle.bo_discount_select_result_firstname}" /> </f:facet> <h:outputText value="#{result.firstname}" /> </rich:column> <rich:column sortBy="#{result.activity.name}" filterBy="#{result.activity.name}"> <f:facet name="header"> <h:outputText id="activity" value="#{bundle.activity}" /> </f:facet> <h:outputText value="#{result.activity.name}" /> </rich:column> <rich:column sortBy="#{result.company.company}" filterBy="#{result.company.company}"> <f:facet name="header"> <h:outputText id="company" value="#{bundle.company}" /> </f:facet> <h:outputText value="#{result.company.company}" /> </rich:column> </rich:extendedDataTable> </h:form>
Partager