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 :

dataTable et checkbox


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Par défaut dataTable et checkbox
    Bonjour,

    je suis en train d'implémenter une méthode qui affecte des rôles à un utilisateur donné.

    Comme indiqué, ci-dessous, quand je sélectionne un utilisateur (à partir de la liste déroulante), les checkbox des rôles qui lui sont affectés sont côchés.



    Pour ajouter un nouveau rôle, je dois côcher le checkbox correspondant. Le problème qui se pose c'est que la nouvelle case côchée n'est jamais prise en compte, elle est toujours à "false" !!! et les trois rôles sont insérés dans la base (doublons) ! Que dois-je faire?

    PS: J'ai essayé d'ajouter onchange="submit()" [au niveau du checkbox] et immediate="true" [bouton] mais ça n'a rien changé!

    Merci

  2. #2
    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
    Bonjour,
    Montres nous un peu de code, merci.

  3. #3
    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
    Hum... Je pencherais pour une erreur à la ligne 45 du code JSF que tu n'as pas fourni, mais c'est pas garanti !
    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

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Par défaut
    Voici la page JSF:

    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
    <h:form id="form0">
     
        <h:panelGrid columns="1" >
          <h:dataTable value="#{Afroleuser.listeroles}" var="var" rowClasses="table-row"
                       headerClass="headerclass" rows="7">
     
            <h:column>
              <f:facet name="header">
                <h:outputText value="Rôle"/>
              </f:facet>
              <h:outputText value="#{var.role}"/>
            </h:column>
            <h:column>
              <f:facet name="header">
                <h:panelGroup>
                  <h:outputText value="Affecté (O/N)"/>
     
                </h:panelGroup>
              </f:facet>
              <h:selectBooleanCheckbox id="check" value="#{var.choix}"/>
            </h:column>
            <f:facet name="header">
              <f:subview id="nav">
                <jsp:include page="/Commons/navigation.jsp"/>
              </f:subview>
            </f:facet>
          </h:dataTable>
           <h:commandButton value="Valider"
                            actionListener="#{Afroleuser.affecter}" immediate="true"/>
     
        </h:panelGrid>
      <h:inputHidden id="tt" value="#{Afroleuser.log"/>
     
    </h:form>
    Le Bean Afroleuser:

    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
     
     
        String log;
        List <SelectItem> liste;
        List<AffectRole> listeroles;
     
        public AffecterRole() {
           init(); 
     
        }
     
     
        public void setLog(String log) {
            this.log = log;
        }
     
        public String getLog() {
            return log;
        }
     
     
        public void setListe(List<SelectItem> liste) {
            this.liste = liste;
        }
     
        public List<SelectItem> getListe() {
            return liste;
        }
     
        public void setListeroles(List<AffectRole> listeroles) {
            this.listeroles = listeroles;
        }
     
        public List<AffectRole> getListeroles() {
            return listeroles;
        }  
     
     
     
       private void init() {
     
       liste= new ArrayList();       
       for (UserAdmin user: Service.getlistuser() ) {
             liste.add(new SelectItem(user.getLogin()));
     
             }
     
             System.out.println("use name "+getLog());
            setListeroles(Service.listrole(getLog()));
     
     
        }
     
     
            public void valueChanged(ValueChangeEvent event) {
                    HtmlSelectOneListbox element = (HtmlSelectOneListbox) event.getComponent();
                    String  label = (String) element.getValue();                 System.out.println(label);
                    setLog(label);
                   init();
     
                }
     
     
     
     
     
        public void affecter(ActionEvent actionEvent) {
            // Add event code here...
     
             for ( AffectRole r: getListeroles())  {
     
               if (r.isChoix()) {
                Service.affect(getLog(),r.getRole()); 
               System.out.println("Affectation du role "+r.getRole()+" à l'utilisateur "+getLog());       
               }
               }
         }

  5. #5
    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
    Euh ... désolé, j'arrive pas à m'imerscer dans ton code

    toutefois, regardes ça:

    Il ne faut jamais utiliser l'immediate=true si on veut récupérer les données côté serveur.


    Ensuite, je te propose ces modifications:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:commandButton value="Valider"
                            action="#{Afroleuser.affecter}"/>

    et dans le managed bean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public String affecter() {
     
     
             for ( AffectRole r: getListeroles())  {
     
               if (r.isChoix()) {
                Service.affect(getLog(),r.getRole()); 
               System.out.println("Affectation du role "+r.getRole()+" à l'utilisateur "+getLog());       
               }
               }
     return null;
         }

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Par défaut
    Le problème persiste toujours!
    Merci pour vos réponses.

  7. #7
    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
    Ok, veux tu reformuler c'est quoi le problème au juste ?
    Et t'es sûr que les valeurs ne sont pas soumises ? Essaies de vérifier en ajoutant des system.out.println dans la méthode d'action ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. dataTables - CheckBox Json
    Par pablofr dans le forum jQuery
    Réponses: 1
    Dernier message: 05/01/2011, 14h27
  2. bug avec une checkbox dans une datatable
    Par ekremyilmaz dans le forum JSF
    Réponses: 2
    Dernier message: 23/07/2010, 14h26
  3. dataTable triable et checkbox
    Par demanghonj dans le forum JSF
    Réponses: 0
    Dernier message: 22/05/2009, 16h31
  4. problème CheckBox dans une Datatable
    Par rc.dev2009 dans le forum JSF
    Réponses: 3
    Dernier message: 23/04/2009, 17h47
  5. Datatable triable et checkbox
    Par edenyorke dans le forum JSF
    Réponses: 2
    Dernier message: 15/04/2008, 16h22

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