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 en sorte qu'une id soit dynamique


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 94
    Points
    94
    Par défaut Faire en sorte qu'une id soit dynamique
    Bonjour à tous.

    J'ai un petit bout de code dans ma vue bas sur un <ui:repeat>.
    J'aurai aimé que chaque instance de ce repeat ai un ID différent afin de pouvoir en faire des ancres afin de pouvoir faire un petit arbre de navigation et ainsi de pouvoir me balader plus rapidement dans ma page grâce à mes ancres.
    Problème : l'id na pas l'air d'accepter pas une EL...

    Quelqu'un aurai une idée?

    Merci par avance!!!

  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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Je ne sais pas si ça peut t'aider, mais chaque élément dans un <ui:repeat> disposera de sa propre id. Je m'explique.
    Prennons ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:form id="myForm">
        <h:outputText id="outside" value="A l'exterieur"/>
        <ui:repeat id="rep" value="..." var="...">
            <h:outputText id="inside" value="A l'interieur"/>
        </ui:repeat>
    </h:form>
    L'ID complet du 1e outputText sera myForm:outside (le formulaire étant un NamingContainer).
    En supposant que le ui:repeat itère sur une liste de 3 éléments, nous aurons donc 3 outputText "A l'interieur". Les ID de ces éléments seront respectivement myForm:0:inside, myForm:1:inside et myForm:2:inside.

    De fait, chaque composant JSF dans le ui:repeat aura bien une ID unique... A mon avis, il y a moyen de pouvoir jouer là dessus, non ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Merci beaucoup de ta réponse.

    il doit y avoir moyen de jouer dessus en ce disant que le numéro dans le <ui:repeat> est le numéro de l'index de l'élément dans la liste...
    Ca fait un peu bidouille quand même.

    Ca aurai été tellement beau de pouvoir faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ui:repeat value="#{monBean.maListe} var="_item">
           <s:dic id="#{_item.id}>
     
                  .........
     
           </s:div>
    </ui:repeat>
    Et ainsi de pouvoir les charger en rajoutant ##{_item.id} à la suite de mon URL...

    Bon je vais essayé de me battre avec tout ça.
    Encore merci.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Bon je galère bien, je ne sais pas du tout comment y acceder...

    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
    	<ui:define name="elemsDoc">
    		<s:div id="elements">
    			<h:form>
    			<ui:repeat value="#{elementDocumentService.elementsAAfficher}" var="_elem">
    				<h:panelGroup id="test">
    						<s:span rendered="#{!elementDocumentService.isBlocACouper(_elem)}">
     
                                                                ......
     
     
                                                    </s:span>
                                   </h:panelGroup>
                           </ui:repeat>
                           </h:form>
                  </s:div>
           </ui:define>

    et dans mon arbre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        <h:form style="height: 250px;overflow: scroll; text-align: left;">    
            <rich:tree style="width:300px" switchType="ajax">
                <rich:recursiveTreeNodesAdaptor roots="#{arbreDocumentService.initArbre()}" var="_item" nodes="#{arbreDocumentService.fils(_item)}" >
                	<rich:treeNode>
                		<a4j:commandLink value="#{_item.chapitre} #{_item.titre}" action="#{elementDocumentService.definirDebut(_item)}" reRender="elements" oncomplete="document.location.href='##{elementDocumentService.elements.indexOf(_item)}:test'" />
                	</rich:treeNode> 
                </rich:recursiveTreeNodesAdaptor>
            </rich:tree>
        </h:form>
    Bon, là c'est un de mes test pour retourner sur l'ancre avec le oncomplete de mon <a4j:commandLink> mais ce n'est pas très concluant...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Bon, je m'en suis sorti.
    J'ai rencontré un souci quand même : connaitre l'id du ui:repeat, et j'ai fini par le regarder dans le code source de la page pour le mettre en dur. Pas très joli mais bon...

    Par contre impossible de rendre une autre vue en ce plaçant directement sur une ancre (on est sur page1, et on veut qu'après le traitement "enregistrer" aller sur page2#monAncre), apparemment il faudra attendre JSF2 et ce n'est pas pour demain

  6. #6
    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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Citation Envoyé par monstor Voir le message
    Par contre impossible de rendre une autre vue en ce plaçant directement sur une ancre (on est sur page1, et on veut qu'après le traitement "enregistrer" aller sur page2#monAncre), apparemment il faudra attendre JSF2 et ce n'est pas pour demain
    Ca doit pouvoir se faire en Javascript non ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Je ne sais pas, et j'avoue que je n'ai plus trop le temps de chercher, l'échéance approchant à grand pas!

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/03/2016, 21h22
  2. Réponses: 1
    Dernier message: 30/05/2013, 15h54
  3. Réponses: 5
    Dernier message: 16/10/2008, 14h36
  4. Réponses: 3
    Dernier message: 02/08/2007, 18h06
  5. Réponses: 3
    Dernier message: 27/04/2006, 09h03

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