[Richfaces] Comment trier une colonne en ignorant systématiquement les valeurs nulles?
Bonjour,
je crois que la question est régulièrement posée (mais pas sur ce forum, aussi loin que mes recherches remontent), mais je n'ai pas trouvé de solution satisfaisante.
Donc je tente ma chance ici.
Je dispose d'une Datatable (rich:datatable ou rich:extendeddatatable : j'utilise les deux). Je souhaiterais que lorsque l'utilisateur trie ses données, les valeurs nulles soient toujours à la fin du tri, quelque soit l'ordre du tri.
Il me semble qu'une solution serait d'implémenter l'interface java.lang.Comparable sur chacune de mes données ... mais comme mes colonnes sont des types de base (String, int, double), je ne me vois pas redéfinir pour chacune d'elle une classe dérivée qui implémenterait cette Interface (ce serait une sacré usine à gaz, me semble t'il).
Je ne vois du coup pas trop d'autre solution pour faire celà.... donc si vous avez une idée!
La table :
Code:
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
| <rich:dataTable
value="#{contact.contactDataModel}"
var="varContact"
columns="9">
<rich:column sortBy="#{varContact.gender}">
<f:facet name="header">
<h:outputText value="#{bundle.gender}" />
</f:facet>
<h:outputText
value="#{bundle.gender_m}"
rendered="#{varContact.gender == '0'}" />
<h:outputText
value="#{bundle.gender_f}"
rendered="#{varContact.gender == '1'}" />
</rich:column>
<rich:column
id="lastnameColumn"
sortBy="#{varContact.lastname}">
<f:facet name="header">
<h:outputText value="#{bundle.lastname}" />
</f:facet>
<h:outputText
value="#{varContact.lastname}"
id="lastname" />
</rich:column>
<rich:column
id="firstnameColumn" sortBy="#{varContact.firstname}">
<f:facet name="header">
<h:outputText value="#{bundle.firstname}" />
</f:facet>
<h:outputText
value="#{varContact.firstname}"
id="firstname" />
</rich:column>
...
</rich:dataTable> |
Le ContactDataModel travaille avec une classe toute simple avec des types de base (String, int, double)