Salut les gens,

Je me suis mis à utiliser RichFaces (3.1.2 GA) entre autre pour l'avantage des tag filterBy et sortBy des datatable.

J'ai ajouté, dans une r:datatable, une colonne de h:selectBooleanCheckbox, bindée via un objet view sur un UISelectBoolean.

Je désire effectuer un traitement Java après clic sur bouton, sur toutes les lignes dont le checkBox est sélectionné.

Problème : si j'utilise le filterBy (saisie d'une lettre quelconque et affichage de quelques lignes seulement), et que je coche une ligne, le traitement Java ne se fait pas sur la ligne correspondante ! Le filter By ne s'applique que sur le visuel rendu à l'utilisateur, tandis que ma méthode getSelectedLines me rend un numéro de ligne dans toute la ArrayList !!

ex :
ArrayList : aa - ab - cc - cd
Affichage : aa - ab - cc - cd
checkbox : x - x
-->lignes séléctionnée : (1) aa, (2) ab

ArrayList --------------- : aa - ab - cc - cd
Affichage avec filterBy "c" : cc - cd
checkbox --------------- : x - x
-->lignes séléctionnée : (1) aa, (2) ab

Que puis-je faire à votre avis ? retravailler la méthode getSelectedLines (mais comment ?) ? Utiliser un autre moyen de "cochage" de ligne ? un autre composant ?

getSelectedLines
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public List getSelectedLines() {
        int size = this.dataTable.getRowCount();
        List datas = (List) this.dataTable.getValue();
        List selectedObjects = new ArrayList();
        for (int i = 0; i < size; i++) {
            this.dataTable.setRowIndex(i);
            if (this.globalCheckboxSelection.isSelected()) {
                selectedObjects.add(datas.get(i));
            }
        }
        return selectedObjects;
    }
merci d'avance pour vos idées