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 :

duplication id dans un foreach


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut duplication id dans un foreach
    Bonjour tout le monde,
    J'ai un petit problème d'id sur mes textarea. Actuellement je parcoure une liste à l'aide de foreach, dans celui-ci je créer un outputTextarea, lors du chargement de la page il m'indique le message suivant:
    duplicate Id for a component redaction:j_id_jsp_814148560_140
    Rédaction est le nom de ma JSP.

    Afin de simplifier les choses, voici le bout de code concerné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <core2:forEach items="#{BeanRedaction.listCategorie}" var="categorie"  varStatus="statutCategorie">
    	<rich:panelBarItem label="#{categorie.nomCategorie}">
    		<rich:dataTable value="#{categorie.listCodeAffectation}" var="code">
    		<rich:column>
    			<html:outputText value="#{code.codeAffectation}" />
    		</rich:column>
    		</rich:dataTable>
    		<html:inputTextarea />
    	</rich:panelBarItem>
    </core2:forEach>
    alors j'ai tester avec un binding et vu qu'on ne peut pas générer d'id dynamiquement, je vois pas trop comment faire, quelqu'un à une idée?

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    pour quel composant tu as l'erreur?
    tu n'utlises pas de binding quelque part?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    l'erreur disparait quand j'enlève mon <html:inputTextarea />. Donc je pense qu'il génère le même identifiant pour chaque <html:inputTextarea /> créé dans ma boucle.

    J'ai viré mon binding pour simplifier le problème car je ne sais pas si c'est la solution et je ne suis pas fan de définir des composants graphique dans mes beans.

    Voici se que j'avais fait avec le binding:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <core2:forEach items="#{BeanRedaction.listCategorie}" var="categorie"  varStatus="statutCategorie">
    <rich:panelBarItem label="#{categorie.nomCategorie}">
    	<rich:dataTable value="#{categorie.listCodeAffectation}" var="code">
    	<rich:column>
    		<html:outputText value="#{code.codeAffectation}" />
    	</rich:column>
    	</rich:dataTable>
    	<html:inputTextarea binding="#{BeanRedaction.texteSaisie[categorie.id]}" />
    </rich:panelBarItem>
    </core2:forEach>
    et dans le bean ca donne ca (je précise que j'ai pas l'habitude d'utiliser des binding donc c'est peut être faux):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    this.texteSaisie = new HashMap<Long, HtmlOutputText>();
    for (Iterator<Categorie> iterator = this.listCategorie.iterator(); iterator.hasNext();)
    {
    	Categorie categorie = (Categorie) iterator.next();
    	HtmlOutputText texte = new HtmlOutputText();
    	texte.setId("_"+categorie.getId().toString());
    	texteSaisie.put(categorie.getId().longValue(), texte);
    }

  4. #4
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2009
    Messages : 11
    Par défaut
    Si l'id peut prendre des EL je te conseille de créer un getter dans ton bean du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private Integer id = 1;
    public String getId() {
     return String.ValueOf(id+1);
    }
    et pour la jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <core2:forEach items="#{BeanRedaction.listCategorie}" var="categorie"  varStatus="statutCategorie">
    	<rich:panelBarItem label="#{categorie.nomCategorie}">
    		<rich:dataTable value="#{categorie.listCodeAffectation}" var="code">
    		<rich:column>
    			<html:outputText value="#{code.codeAffectation}" />
    		</rich:column>
    		</rich:dataTable>
    		<html:inputTextarea id="#{BeanRedaction.id}" />
    	</rich:panelBarItem>
    </core2:forEach>
    normalement à chaque passage du foreach la méthode sera appelée.

    A testé

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    Merci pour cette proposition malheureusement, j'ai déjà testé un truc similaire et id ne peut être une valeur dynamique. Je n'ai pas le droit de mettre quelque chose du type:

    C'est d'ailleurs pour cela que j'ai essayé de me tourner vers le binding qui semble être une méthode pour définir les paramètres d'un tag.

  6. #6
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2009
    Messages : 11
    Par défaut
    donne un id à tout les composant sans exception pour commencer et regarder si les id générer par le for-each sont différente !

Discussions similaires

  1. [Tableaux] Message d'erreur dans un foreach
    Par maysa dans le forum Langage
    Réponses: 2
    Dernier message: 14/08/2007, 11h45
  2. [JSTL] Checkboxes dans un foreach
    Par BadIsGood dans le forum Taglibs
    Réponses: 2
    Dernier message: 29/06/2007, 18h58
  3. [C#]utilisation de variables contenu dans un foreach
    Par beufreecasse dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/11/2006, 20h42
  4. [C#] Problème duplication intempestive dans treeview
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 6
    Dernier message: 12/06/2006, 10h23
  5. Problème de variable dans un foreach
    Par VolaiL dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/05/2006, 16h57

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