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 :

JSF et Ajax - Listes dynamiques


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 35
    Points
    35
    Par défaut JSF et Ajax - Listes dynamiques
    Bonjour,

    J'ai créé un arbre avec Primefaces et je souhaite que, lorsqu'on sélectionne un mot de l'arbre, des informations propres à ce mot s'affichent dynamiquement dans ma page. Pour les informations contenues dans des int et des String, tout fonctionne bien, en revanche lorsqu'il s'agit de listes (ArrayList<String>) j'ai besoin d'actualiser ma page pour que les informations apparaissent.

    Pour l'instant j'ai mis des informations en dure (plus tard il faudra aller les chercher en base de données puisqu'elles doivent être propre à chaque mot), donc actuellement rien ne s'affiche quand la page s'ouvre et, à la sélection d'un mot, les informations apparaissent (changer de mot ne change donc rien ensuite, c'est juste pour tester le bon fonctionnement de l'affichage).

    Voici le code de la fonction de sélection d'un mot de l'arbre dans ma classe TreeBean :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void onNodeSelect(NodeSelectEvent event) {
          this.nom = this.selectedNode.toString();
          this.info1= "10";
          ArrayList<String> temp = new ArrayList<String>();
          String s = "nouveau terme";
          temp.add(s);
          this.info2= temp;
          this.date = "10/10/10";
    }

    info1 est un int, nom est un String et info2 est une ArrayList<String>.

    Voici le code de mon arbre :
    Code JSF : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <h:form id="form">  
    <p:tree value="#{treeBean.root}" var="node" dynamic="true" cache="true" selectionMode="single"  selection="#{treeBean.selectedNode}" id="tree">
          <p:ajax event="expand" listener="#{treeBean.onNodeExpand}" />  
          <p:ajax event="select" update=":testOut1,:testOut2,:testOut3,:testOut4" listener="#{treeBean.onNodeSelect}" />
          <p:treeNode>  
                <h:outputText value="#{node}"/>  
          </p:treeNode>  
    </p:tree>  
    </h:form>

    Et enfin le code d'affichage de la liste (je ne met pas l'affichag int/String puisqu'il fonctionne bien) :

    Code JSF : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ul>
          <ui:repeat id="testOut2" value="#{treeBean.info2}" var="item">
                <li>#{item}</li>
          </ui:repeat>
    </ul>

    Voilà voilà, si je n'ai pas été claire ou s'il manque des informations n'hésitez pas à me les demander Merci d'avance !

  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
    Je n'ai pas bien compris ce que tu cherches à faire, rectifie si je me trompe.

    - tu as un arbre
    - quand tu cliques sur un noeud de l'arbre, tu veux afficher des informations liées au noeud dans une popup

    C'est ça ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 35
    Points
    35
    Par défaut
    J'ai effectivement un arbre, et lorsque je clique sur un élément de l'arbre je veux que les informations liées à cet éléments s'affichent directement sur la page mais sans la recharger (donc c'est pas un pop-up mais c'est dynamique).

    Ici ça marche pour les éléments qui ne sont pas des listes. Pour les liste, l'information ne s'affiche que quand j'actualise la page, alors que moi ce que je voudrait c'est un affichage immédiat, sans rechargement de page.

  4. #4
    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
    Quelle est la nature de "treeBean.info2" ?

    Pour info, tu devrais utiliser un overlayPanel avec l'attribut dynamic="true", mais c'est secondaire...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 35
    Points
    35
    Par défaut
    Je suis débutante en JSF (et Primefaces aussi par la même occasion) donc je ne connais pas l'overlayPanel ^^" Mais j'irais regarder la doc du coup, merci !

    TreeBean.info2 est l'ArrayListe<String> dans laquelle je met la chaîne "nouveau terme" dans ma fonction onNodeSelect. C'est un attribut privée de la classe TreeBean donc.

  6. #6
    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
    Essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h:panelGroup  id="testOut2">
       <ul>
           <ui:repeat value="#{treeBean.info2}" var="item">
                <li>#{item}</li>
           </ui:repeat>
        </ul>
    </h:panelGroup>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 35
    Points
    35
    Par défaut
    Super, ça marche ! Merci beaucoup, par contre est ce que tu as une explication sur le fait que ça ne marchait pas avant (histoire que je comprenne mon erreur) ?

  8. #8
    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
    Le <ui:repeat> est interprété au moment de la création de la page, le fait de mettre l'id utilisé pour l'update dessus ne fait rien du coup.
    Il faut l'inclure à l'intérieur d'un autre élément pour qu'il ré-évalue le contenu et relance le code <ui:repeat>
    (je ne sais pas si je suis très clair là )
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 56
    Points : 35
    Points
    35
    Par défaut
    Je pense avoir saisi l'idée Merci !

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

Discussions similaires

  1. liste dynamique en JSF
    Par DevASMAPFE dans le forum NetBeans
    Réponses: 0
    Dernier message: 01/04/2013, 16h11
  2. [AJAX] Charger une liste dynamique AJAX PHP
    Par renardchan dans le forum AJAX
    Réponses: 3
    Dernier message: 31/01/2011, 00h08
  3. [AJAX] Listes dynamiques liées-formulaire-Ajax
    Par leFred dans le forum AJAX
    Réponses: 2
    Dernier message: 12/08/2009, 17h17
  4. Charger une liste dynamiquement avec AJAX
    Par macra dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/10/2006, 21h39
  5. [JSF] Listes dynamiques
    Par Pakiam dans le forum JSF
    Réponses: 7
    Dernier message: 31/07/2006, 16h01

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