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 :

Faire apparaître des cases à cocher cachées


Sujet :

JSF Java

  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut Faire apparaître des cases à cocher cachées
    Bonjour,

    J'ai une liste de cases à cocher. A chaque fois que je coche une case, une autre doit apparaître en face. Ce que je n'arrive pas à faire, c'est faire apparaître ces cases...
    Mon code ressemble à ça:
    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
    <h:panelGrid id="blocPersonnes"						
    						<f:facet name="header">
    							<h:outputText value="PERSONNES INTERESSEES" />
    						</f:facet>
    						<h:panelGroup id="groupePersonnesInteressees" layout="block">
    							<fieldset>
    								<legend>Cochez les personnes intéressées</legend>
    								<h:selectManyCheckbox layout="pageDirection">
    									<f:selectItems value="#{gensBean.listePersonnes()}" />
    								</h:selectManyCheckbox>
    							</fieldset>
    						</h:panelGroup>
    						<h:panelGroup id="groupePersonnesConfirmees" layout="block">
    							<fieldset>
    								<legend>Cochez les personnes qui viendront</legend>					
    								<h:selectManyCheckbox layout="pageDirection">
    									<f:selectItems value="#{gensBean.listePersonnes()}" />
    								</h:selectManyCheckbox>
    							</fieldset>
    						</h:panelGroup>
    					</h:panelGrid>
    La seconde partie est censée être cachée et n'apparaît que si la case à cocher qui a précède est cochée. Une idée de comment faire?
    Merci!

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Si je comprends bien, c'est le block "groupePersonnesConfirmees" qui doit être caché si rien n'est coché dans le block "groupePersonnesInteresseesé", c'est ça ?

    Si oui, j'utiliserais un code de ce genre
    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
    <h:panelGroup id="groupePersonnesInteressees" layout="block">
        <fieldset>
            <legend>Cochez les personnes intéressées</legend>
            <h:selectManyCheckbox layout="pageDirection">
                <f:ajax event="change" render="groupePersonnesConfirmees"/>
                <f:selectItems value="#{gensBean.listePersonnes()}" />
            </h:selectManyCheckbox>
        </fieldset>
    </h:panelGroup>
    
    <h:panelGroup id="groupePersonnesConfirmees" layout="block">
        <h:panelGroup rendered="#{tonManagedBean.leTestSiUnElementEstSélectionné()}">
            <fieldset>
                <legend>Cochez les personnes qui viendront</legend>                    
                <h:selectManyCheckbox layout="pageDirection">
                    <f:selectItems value="#{gensBean.listePersonnes()}" />
                </h:selectManyCheckbox>
            </fieldset>
        </h:panelGroup>
    </h:panelGroup>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Si je comprends bien, c'est le block "groupePersonnesConfirmees" qui doit être caché si rien n'est coché dans le block "groupePersonnesInteresseesé", c'est ça ?

    Si oui, j'utiliserais un code de ce genre
    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
    <h:panelGroup id="groupePersonnesInteressees" layout="block">
        <fieldset>
            <legend>Cochez les personnes intéressées</legend>
            <h:selectManyCheckbox layout="pageDirection">
                <f:ajax event="change" render="groupePersonnesConfirmees"/>
                <f:selectItems value="#{gensBean.listePersonnes()}" />
            </h:selectManyCheckbox>
        </fieldset>
    </h:panelGroup>
    
    <h:panelGroup id="groupePersonnesConfirmees" layout="block">
        <h:panelGroup rendered="#{tonManagedBean.leTestSiUnElementEstSélectionné()}">
            <fieldset>
                <legend>Cochez les personnes qui viendront</legend>                    
                <h:selectManyCheckbox layout="pageDirection">
                    <f:selectItems value="#{gensBean.listePersonnes()}" />
                </h:selectManyCheckbox>
            </fieldset>
        </h:panelGroup>
    </h:panelGroup>
    ça reste à tester
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut
    Merci, c'est bien une histoire de render et rendered à ajouter.
    Seulement j'ai un problème avec les id. Car en gros, je dois avoir deux listes de cases à cocher. La deuxième est cachée. Si on clique sur une case de la première liste, une (seulement une, celle qui est en face) case à cocher apparaît de la seconde liste.
    Je ne sais pas comment mettre les id à chaque case.
    J'ai essayé de mettre var = "obj" et de mettre comme id = "obj.value" mais ça ne marche pas. Ça me met une erreur...

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Peux-tu faire uns esquisse de ce que tu veux avoir comme rendu ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut
    Si je mets ce code:
    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
    <h:form id="formTest">
    				<ui:repeat var="item" value="#{gensBean.listePersonnes()}" varStatus="loop">
    				<h:selectBooleanCheckbox id="#{loop.index}" rendered = "..."/>
    				<br />
    			</ui:repeat>
    			<br />
    			<ui:repeat var="item" value="#{gensBean.listePersonnes()}" varStatus="loop">
    				<h:selectBooleanCheckbox value="#{item.value}" id="_#{loop.index}" >
    					<f:ajax event="click" render="loop.index"/>
    				</h:selectBooleanCheckbox>
    				<h:outputText value="#{item.label}" />
    				<br />
    			</ui:repeat>
    		</h:form>
    Avec ce code, il me dit: Empty id attribute is not allowed
    Pourquoi?

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu devrais passer par un objet encapsulant tes 2 valeurs liées et faire une boucle de chargement sur une liste de cet objet pour construire tes checkboxes...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut
    Ok, merci, effectivement, ça marche mieux avec un <h:panelGroup>.
    Une esquisse de ce que je veux en PJ.
    Merci!
    Nom : Sans titre.png
Affichages : 164
Taille : 11,8 Ko

  9. #9
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut
    En gros maintenant j'ai ça:
    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
    <h:form id="formTest">
    			<h:panelGroup id="groupePersonnesConfirmees">
    				<ui:repeat var="item" value="#{gensBean.listePersonnesConfirmees()}" varStatus="loop">
    					<h:selectBooleanCheckbox value="#{gensBean.mapPersonnesConfirmees[item]}" />
    					<h:outputText value="#{item.label}" />
    					<br />
    				</ui:repeat>
    			</h:panelGroup>
    			<br />
    			<h:panelGroup id="groupePersonnesPotentielles">
    			<ui:repeat var="item" value="#{gensBean.listePersonnesPotentielles()}" varStatus="loop">
    				<h:selectBooleanCheckbox value="#{gensBean.mapPersonnesPotentielles[item]}">
    					<f:ajax execute="groupePersonnesPotentielles" event="click" render="groupePersonnesConfirmees" />
    				</h:selectBooleanCheckbox>
    				<h:outputText value="#{item.label}" />
    				<br />
    			</ui:repeat>
    			</h:panelGroup>
    		</h:form>
    Mais rien en se passe quand je coche sur la première liste

  10. #10
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut
    J'ai trouvé la solution par hasard
    J'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    render="formTest:groupePersonnesConfirmees"
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    render="groupePersonnesConfirmees"
    C'est quoi la différence entre les deux? mon id est bien unique...

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Il doit être unique, mais il y a la notion de conteneur...
    Certains composants sont des conteneurs, d'autres non. Par exemple, <h:form>, <h:tabView> ... sont des conteneurs
    Dans ce cas, il faut donner le chemin complet (enfin, sauf si on est à l'intérieur du conteneur demandeur).
    C'est souvent laborieux et je te suggère d'utiliser firebug pour voir l'id généré dans la page.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut
    D'accord merci pour l'explication
    Mon problème maintenant c'est que si je coche des cases dans la deuxième liste, dès que je coche une case de la première liste, ma seconde liste est réinitialisée, et du coup je perds les cases que j'ai cochées à la seconde...

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le code actuel ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 593
    Points : 353
    Points
    353
    Par défaut
    J'ai fini par enregistrer côté serveur les cases cochées... Un peu compliqué de poster le code.
    Merci de ton aide!

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Oui, c'est un peu là que je voulais aller, j'avais vu dans le code initial que tu n'associais pas la valeur à ton managedBean, du coup, le rerender ne peut conserver son état...
    Bref, c'est ok... c'est l'essentiel
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2006, 16h48
  2. Comment ajouter des cases à cocher
    Par @yoyo dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/03/2006, 10h16
  3. Problèmes avec des cases à cocher et une liste déroulante
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/01/2006, 10h52
  4. calcul sur des cases à cocher
    Par karidrou dans le forum Access
    Réponses: 3
    Dernier message: 06/12/2005, 11h40
  5. Réponses: 5
    Dernier message: 25/11/2004, 09h11

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