IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

[DEBUTANT] binding checkbox ?


Sujet :

JSF Java

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut [DEBUTANT] binding checkbox ?
    Bonjour a tous,
    Voila je debute sur JSF, je suis en train de réaliser un tuto de developpez et j'en susi au binding.

    L'exemple propose un tableau avec des checkbox, le bean managé contient le UIData (composant tableau) et un composant UISelectBoolean.

    L'idée est de pouvoir supprimer les ligne du tableau dont la checkbox est coché.

    voici le code lancer lorsque l'on clique sur supprimer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
       public void removeSelectedPersonne(){
           int size = datatable.getRowCount();
           List selectedPersonnes = new ArrayList();
           for (int i = 0;i<size;i++){
               this.datatable.setRowIndex(i);
               if(this.checkbox.isSelected()){
                   selectedPersonnes.add(getPersonnes().get(i));
               }
     
           }
           this.personnes.removeAll(selectedPersonnes);
       }
    Cela fonctionne, mais a vrai dire , je ne comprend pas comment !
    On a 1 datatable et plusieurs checkbox hors ces checkbox sont bindé sur 1 seule et unique attribut UISelectBoolean, je ne comprend pas ce qui modifie l'attribut checkbox lors du parcours du datatable.

    Je sais pas si je suis tres clair mais pour moi c'est comme si j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    int cpt = 1; //simulation de binding  :)
    for (i = 0;i<size;i++){
    if(cpt==2)
     // .... code jamais executé
     
    }
    La seule chose que je vois, c'est que lorsqu'il fait setRowIndex(i) il modifie l'attribut check box de l'objet contenant le datatable ce qui parrait compliqué !!

    Enfin bref je pige pas la !!

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Citation Envoyé par FreshVic Voir le message
    La seule chose que je vois, c'est que lorsqu'il fait setRowIndex(i) il modifie l'attribut check box de l'objet contenant le datatable ce qui parrait compliqué !!
    Bah figure toi que c'est à peu près ça justement

    Regarde par exemple cette entrée dans la FAQ.
    On y indique comment retrouver l'élément de la datatable situé sur la ligne où l'utilisateur a cliqué.
    Bah c'est la même chose, la méthode getRowData() retournant l'objet de la ligne sélectionnée...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Salut
    Pour être tout à fait franc avec toi, je ne suis pas sûr de ce qui se passe dans le code que tu montres. Ton explication :
    La seule chose que je vois, c'est que lorsqu'il fait setRowIndex(i) il modifie l'attribut check box de l'objet contenant le datatable ce qui parrait compliqué !!
    M'ai l'ai très censée et très possible

    Mais sinon, Après 2 ans de travail avec JSF, je peux te dire que je n'utilise (presque) jamais ce type de programmation (en travaillant sur les composants bindés), car ça m'a l'air pas très propre, les composants (Java) de JSF sont mal foutus et leur API cryptique (à l'inverse de ceux de Wicket ).

    Bred, dans ton cas, tu pourrais t'en sortir d'une méthode beaucoup plus propore et lisible (du moins à mon gout) en bindant le value des checkBox à une liste de Boolean, et en itérant sur cette liste dans l'action.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:dataTable value="#{bean.liste}" var="row">
      <h:column>
        <<h:selectBooleanCheckBox value="#{row.selected}"
      </h:column>
    </h:dataTable>

    ET dans l'action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(Item item : liste){
      if(item.isSelected(){
        //on le supprime.
      }
    }
    Au fait, apparamment, on compte repenser complètement l'architecture du dataTable en JSF 2.0 car même Ed Burns l'avoue, c'est baclé (à cause des délais).
    Je vais essayer de retrouver le lien vers ceci et le poster ici.

  4. #4
    Expert confirmé
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Je vais essayer de retrouver le lien vers ceci et le poster ici.
    https://javaserverfaces-spec-public....bug.cgi?id=236

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    J'avais pas vu cette réponse,j'arrive apres la bataille mais merci , effectivement binder la liste de checkbox me semble bcp plus clair !

Discussions similaires

  1. Binding Checkbox dans une ListView
    Par Ashura95 dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 18/10/2010, 16h50
  2. debutant selection checkbox
    Par burndev dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/03/2010, 11h59
  3. [debutant] evenement checkbox datagrid
    Par noname_971 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 25/05/2009, 15h23
  4. Binding CheckBox et Bool property
    Par ludogoal dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 15/04/2009, 17h56
  5. [struts][debutant]input checkbox vs html checkbox
    Par venegan dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/08/2005, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo