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 :

Liste déroulante et AJAX


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 31
    Points
    31
    Par défaut Liste déroulante et AJAX
    Bonjour,

    je souhaite remplir une liste déroulante après une sélection au préalable dans une autre liste déroulante grâce à Ajax4JSF de richFaces.
    J'ai donc procédé ainsi :

    code JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <h:selectOneMenu id="som1" value="#{myBean.cdns}">
                        <f:selectItems value="#{myBean.cdnsListe}"/>
                            <a4j:support event="onchange" action="#{myBean.updateListe}" reRender="som2"/>
                    </h:selectOneMenu>
     
     
                    <h:selectOneMenu id="som2" value="#{myBean.cdns2}">
                        <f:selectItems value="#{myBean.cdnsListe2}"/>
                    </h:selectOneMenu>
    MyBean.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public String updateListe() {
                    SelectItem[] s = {new SelectItem(this.getCdns(),this.getCdns())};
                    this.cdnsListe2 = s;
                    return null;
    }
    Mon problème est que lorsque j'effectue un choix dans la première liste et que je me rends compte que je me suis trompée, je re-sélectionne une nouvelle valeur et la j'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Exception
     
    javax.servlet.ServletException
     
    Cause racine
     
    java.util.NoSuchElementException
    Quelqu'un aurait-il une explication et une solution?

    Merci

  2. #2
    sup
    sup est déconnecté
    Membre régulier Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Points : 72
    Points
    72
    Par défaut
    Salut NinaSky,
    je pense que tu t'y prend mal, <a4j:support est bien pour faire des reRender mais tu devrais plutot utiliser un valueChangeListener dans ton h:selectOneMenu plutot que l'action du a4j:support

    Le comportement ajax restera le meme , et de plus dans la methode de ton valueChangeListener tu pourras recuperer un ValueChangeEvent qui contiendra la nouvelle valeur qui a été selectionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:selectOneMenu id="som1" value="#{myBean.cdns}"
    valueChangeListener="#{myBean.updateListeValueChange}">
                        <f:selectItems value="#{myBean.cdnsListe}"/>
                            <a4j:support event="onchange" reRender="som2"/>
                    </h:selectOneMenu>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public void updateListeValueChange(ValueChangeEvent evt) throws AbortProcessingException 
    { ...
    A++

  3. #3
    Membre du Club Avatar de bousnguar
    Inscrit en
    Février 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 71
    Points : 55
    Points
    55
    Par défaut
    Bon,
    ce que je cherche si deux liste dépendantes, par exemple
    Liste pays
    Liste Ville
    quant je choisi le pays la liste des viles change, (car les viles de France ne sont pas celles du maroc ), mais tous ça avec ajax pour que la page ne chargera pas toute entière après le changement de la liste, seulement la liste des viles qui sera update.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 31
    Points
    31
    Par défaut
    Merci pour ta réponse sup!
    J'ai effectivement déjà essayé de cette façon mais mon problème persiste!

    Je ne comprends pas pourquoi je ne peux pas re-sélectionner une valeur dans ma première liste!!
    J'ai vérifié, la première liste ne perd pas d'informations!Est-ce l'AJAX qui ne permet pas cette manipulation?

    Je suis un peu dépitée...ça fait un moment que je bloque là dessus!!

  5. #5
    sup
    sup est déconnecté
    Membre régulier Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Points : 72
    Points
    72
    Par défaut
    à tout hasard, le scope de ton bean est-il en request ou en session?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 31
    Points
    31
    Par défaut
    request....

  7. #7
    sup
    sup est déconnecté
    Membre régulier Avatar de sup
    Profil pro
    Inscrit en
    Août 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 70
    Points : 72
    Points
    72
    Par défaut
    ben c'est ca le probleme!
    je suis egalement un peu géné par le fait de mettre tous mes beans qui contiennent de l'AJAX en scope session mais nous n'avons pas vraiment le choix, car un declenchant un evenement (avec de l'ajax), il y a une requete qui part au serveur, donc ton bean est reinitialisé (à cause du scope request).

    Tu as 2 solutions (enfin je pense) :
    * Passer en scope session
    * oublier a4j

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 31
    Points
    31
    Par défaut
    Ok...bon ba tant pis, je passe en scope session!!

    Merci beaucoup!!!!

    Effectivement ça fonctionne ainsi...

    Quelle galère de chercher alors que c'est aussi con!!!

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

Discussions similaires

  1. [AJAX] Lier deux listes déroulantes avec ajax
    Par king_soft dans le forum AJAX
    Réponses: 1
    Dernier message: 07/01/2011, 09h49
  2. Réponses: 9
    Dernier message: 09/09/2010, 13h56
  3. Réponses: 71
    Dernier message: 04/08/2010, 16h37
  4. Superposition de listes déroulantes dynamiques ajax
    Par Yelloz dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/05/2009, 10h23
  5. Plusieurs listes déroulantes liées (ajax)
    Par sassien dans le forum Struts 2
    Réponses: 1
    Dernier message: 18/03/2008, 13h52

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