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 :

Probème avec les cases à cocher


Sujet :

JSF Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut Probème avec les cases à cocher
    Bonsoir tout le monde, je travaille une application web en utilisant jsf et richfaces avec lesquels je débute.Mais en ce moment je trouve un problème avec l'utilisation de <h:selectBooleanCheckbox>

    en fait voila l'idée que j'essaye d'implémenter:
    j'ai une table d'utilisateurs avec 2 colonnes :
    le nom d'utilisateur et un bouton "ajouter droit" qui permet d'afficher un modal panel "droits" (pour chaque utilisateur)
    dans ce dernier, je vais afficher une table avec deux colonnes :
    la première contient le nom du module et la deuxième contient une case à cocher (selectBooleanCheckbox) , dans ce modal panel, j'ajouter un bouton "ajouter" qui permet d'ajouter les modules cochés aux droits de l'utilisateur selectionné. en fait la difficulté trouvée est au niveau de l'extraction des cases cochées.
    si quelqu'un peut m'aider par un exemple de code ou bien un tutorial que je peux suivre, je serais reconnaissante.
    Merci d'avance

  2. #2
    Membre averti Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Points : 333
    Points
    333
    Par défaut
    On peut faire ca de plusieurs façon.

    Personnellement j'aime bien la solution de la Map dans ce genre de cas.
    Dans ton cas ca donnerait une Map<Module, Boolean>.

    Bean :
    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
     
    public class Bean {
     
       private Map<Module,Boolean> map;
     
       // getters & setters
       // initialisation de la HashMap toussa toussa
     
       public Set<Module> getMapKeys() {
          return map.keySet();
       }
     
       public String action() {
       // il suffit de parcourir la map pour avoir la valeur de la checkbox pour chaque Module
       }
     
    }
    Page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <rich:dataTable value="#{bean.mapKeys}" var="key">
       <rich:column>
          <h:outputText value="#{key.nomModule}" />
       </rich:column>
       <rich:column>
          <h:selectBooleanCheckbox value="#{bean.map[key]}" />
       </rich:column>
    </rich:dataTable>
     
    <h:commandButton value="Affecter" action="#{bean.action}" />
    N'oubliez pas le quand vous avez votre solution.

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Je ne comprends pas pourquoi tu mets une map dans ta checkbox, pourquoi tu mettrais simplement pas un boolean? Au chargement de la page JSF va cocher tout seul cocher cette case si la valeur du booleen est à true et décocher sinon. Et à la récupération t'auras le scénario inverse.Ca parait logique non?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  4. #4
    Membre averti Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Points : 333
    Points
    333
    Par défaut
    Je ne comprend pas la remarque

    Par rapport à mon exemple je vais pointer la checkbox vers le Boolean contenue dans la map associé au module de la ligne en cours.
    Cela me permet de savoir quels sont les modules cochés et lesquels ne le sont pas.

    Le fait que JSF coche ou pas directement grâce à la valeur booléenne n'est pas impacté puisque actuellement cela pointe vers une valeur booléenne, elle est simplement contenu dans une map pour savoir à quel module elle est associé.
    N'oubliez pas le quand vous avez votre solution.

  5. #5
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Autant pour moi j'avais pas vu le typage boolean de ton bean.
    Mais pour la récupération en itérant sur l'ensemble des valeurs de ta map tu dois avoirs les valeurs booleens representants les cases cochées par l'utilisateur non?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  6. #6
    Membre averti Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Points : 333
    Points
    333
    Par défaut
    Oui effectivement, en iterant sur la map on obtient à chaque Entry de la map un couple Module -> Valeur boolean de la case à coché.
    N'oubliez pas le quand vous avez votre solution.

  7. #7
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Ceci dit une map c'est un peu lourd pour son souci. Il peut aussi créer un bean DataDisplayModule ayant pour attribut le nom du module et le booleen alimentant la case à cocher, et donc renseigner une arraylist<DataDisplayModule > qui alimentera son datatable comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <rich:dataTable value="#{bean.monTabModule}" var="key">
       <rich:column>
          <h:outputText value="#{key.nomModule}" />
       </rich:column>
       <rich:column>
          <h:selectBooleanCheckbox value="#{bean.monBooleen}" />
       </rich:column>
    </rich:dataTable>
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  8. #8
    Membre averti Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Points : 333
    Points
    333
    Par défaut
    C'est la deuxième solution que j'utilise.

    Après c'est un choix, je préfère la solution du bean comme tu la propose mais je trouve que c'est un poil moins lisible quand on n'a pas l'habitude de la solution (bon c'est relatif aussi moi je préfère ta solution en lisibilité + encapsulation toussa toussa )
    N'oubliez pas le quand vous avez votre solution.

Discussions similaires

  1. Problème d'impression avec les cases à cocher
    Par madseb dans le forum Access
    Réponses: 7
    Dernier message: 17/09/2022, 18h20
  2. Problème avec les cases à cocher
    Par psycopat dans le forum Access
    Réponses: 8
    Dernier message: 20/10/2005, 14h25
  3. Pb avec les cases à cocher
    Par magic8392 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/03/2005, 16h49
  4. Pb avec les cases à cocher
    Par magic8392 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/03/2005, 13h44

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