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 :

[RichFaces] reRender panelGrid


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut [RichFaces] reRender panelGrid
    Bonjour à tous,

    J'aimerais faire ceci : j'ai une liste de membres. Lorsque que je click sur le bouton Add, je transfert ce membre dans une autre liste. J'aimerais aussi qu'un PanelGrid se mette à jour en fonction des membres dans la 2eme liste.

    Mais le problème vient du panelGrid qui ne veut pas se rafraichir, lorsque je fais un Add puis un refresh de la page (F5), là il est correctement mis à jour. Le seul soucis qu'il ne se rafraichit pas automatiquement :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a4j:outputPanel id="opPanel" ajaxRendered="true">
    			<h:panelGrid binding="#{bean.somePanelGrid}" id="panel"
    				rowClasses="row1, row2" />
    		</a4j:outputPanel>
    J'ai donc un a4j:commandButton, avec un reRender de mon opPanel. J'ai essayé pas mal de solution mais rien ne marche

    Une idée sur ce problème ? C'est quand même bizarre puisqu'en général j'arrive a rafraichir tout ce que je veux quand je veux :s

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    utilise firefox et installe firebug.
    dans la premiere onglet : console tu y verrai les request ajaxiens
    dans la resopnse du request de ton buton voix la response es qu'elle contient le resultat escompte???

  3. #3
    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
    en faisant comme cela, tu n'a pas besoin de ajaxRendered=true, il suffit de faire reRender de l'id de a4j:outputPanel.

    et si ça ne passe pas, poste ton code..du boutton qui faire le reRender.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Ouaip je sais que le AjaxRendered a Tru va d'office me rafraichir cette partie de ma page mais comme je l'ai dis, j'ai essayé quelques trucs :p


    Voici le code du bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <a4j:commandButton id="Add"
    				value="Add"
    				action="#{bean.deleteMember}"
    				reRender="addedMembers,availableMembers,opPanel">
    		</a4j:commandButton>
    		<a4j:outputPanel id="opPanel" ajaxRendered="true">
    		<h:panelGrid binding="#{bean.somePanelGrid}" id="panel"
    				rowClasses="row1, row2" />
    		</a4j:outputPanel>
    DOnc lorsque je clique, je rafraichis 2 listes, et mon outputPanel. J'ai aussi essayé avec un PanelGroup à la place de l'outputPanel. Et aussi de rafraichir directement le panelGrid grâce a son id.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Ah ! J'ai pas trouvé mais j'ai plus d'informations !

    En fait le panelGrid devrait avoir des informations qu'il n'a pas. Donc normallement mon code de ma JSF est clean, mais pas celui du bena derrière ^^

    Je vous tiens au courant :p

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Si dans ma méthode getSomePanelGrid je met un affichage console. Lors du reRender il doit me l'afficher non?


    Car là il ne me l'affiche pas ><


    EDIT : je remarques des choses que je ne comprend pas. La première quand je click sur mon bouton, il rentre dans la méthode setSomePanelGrid. Il n'est pas censé faire le get? Oo

    Autre chose, il me refresh mon panel AVANT de faire le add. J'aimerais que cela se fasse après moi :s

  7. #7
    Membre éclairé Avatar de VirageGroup
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 81
    Par défaut
    Pourquoi ne pas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <a4j:commandButton id="Add"
    				value="Add"
    				action="#{bean.deleteMember}"
    				reRender="addedMembers,availableMembers,panel">
    </a4j:commandButton>
     
    <h:panelGrid binding="#{bean.somePanelGrid}" id="panel"
    				rowClasses="row1, row2" />
    VG.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Parceque ça ne marche pas


    EDIT : précision, c'est pas que ça ne marche pas, c'est que ça ne marche pas comme je le voudrais.

    Vu qu'il me réaffiche le panel AVANT de faire l'action, le panel n'est pas synchronisé avec les résultats réels. Il y a a chaque fois une action décalée.

  9. #9
    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
    c'est à cause du binding.
    comment tu mets à jour le panelGrid?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    C'est dans un autre bean, je vais rechercher mes membres en session et ensuite je construis le panelGrid en fonction du résultat.

    Mais j'ai pas l'impression que cela vienne de là étant donné que lors du refresh j'ai un affichage console qui prouve que les données sont présentes et correctes !

    Voici comment ça se déroule :

    1) Je click sur mon bouton
    2) J'entre dans ma méthode setSomePanelGrid (car c'est là qu'il faut construire mon panelGrid d'après un article, moi je pensais que c'était le getSomePanelGrid)
    3) récupération des données. Mais il n'y en a pas vu que la méthode Add n'a pas encore été executée
    4)Execution de ma méthode Add.

    5)Re click sur mon bouton
    6)re setSomePanelGrid
    7)Récupération des données. Il y en a une, normal la méthode Add a été executée le tour d'avant
    8) Execution de la méthode Add.

    Bref, y'a un décalage

    Maintenant ça va être dur de vous montrer exactement ce qu'il se passe. J'ai l'impression que je vais être seul face à mon problème pour ce coup ci xD

    Voici le lien que j'ai suivit pour le binding d'un panelGrid dynamic

    http://roneiv.wordpress.com/2008/08/...ing-richfaces/


    EDIT : en résumé j'aimerais savoir pourquoi il fait le rerender de mon panel AVANT d'executer l'action qui correspond à mon bouton ?

  11. #11
    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
    mais, le contenu du panelGrid il change par rapport à quoi? pourquoi le mettre dans un getter ou setter, les getters et setters sont appelés plusieurs fois.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Le contenu du panelGrid change en fonction du nombre de membres selectionné.

    J'ai 2 menu. Dans l'un les membres disponibles. Dans l'autre ceux selectionné.

    Le bouton transfert un membre vers l'autre liste.

    Le PanelGrid lui, change de contenu en fonction des membres présent (en gros, une ligne par membre).

  13. #13
    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
    Citation Envoyé par Jexou Voir le message
    Le contenu du panelGrid change en fonction du nombre de membres selectionné.

    J'ai 2 menu. Dans l'un les membres disponibles. Dans l'autre ceux selectionné.

    Le bouton transfert un membre vers l'autre liste.

    Le PanelGrid lui, change de contenu en fonction des membres présent (en gros, une ligne par membre).
    donc déjà, le code du panelGrid modifie le dans le code de l'action..

  14. #14
    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
    et dans le a4j:commandButton ajoutes

    ce qui permet d'inclure a4j:outputPanel dans le processus des phases jsf pour la requete ajax.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Waw. Ca marche.

    Le process ne change rien dans mon cas (et je ne connaissais pas, merci).

    Maintenant ce que je ne comprend pas, c'est pourquoi en ne mettant plus rien dans mes getter/setter et en mettant un appel à ma construction du panelGrid dans la méthode de mon action il ne rentre plus en premier dans le setter de mon panelGrid...

    Si tu as réponse à ça, un grand merci. Et un énorme merci pour avoir reglé mon problème, j'étais tellement focus sur la solution proposée par le site, que je n'ai même pas pensé a rendre mon truc plus logique (car en général les getters et setter sont vide !).

  16. #16
    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
    Citation Envoyé par Jexou Voir le message
    Waw. Ca marche.

    Le process ne change rien dans mon cas (et je ne connaissais pas, merci).

    Maintenant ce que je ne comprend pas, c'est pourquoi en ne mettant plus rien dans mes getter/setter et en mettant un appel à ma construction du panelGrid dans la méthode de mon action il ne rentre plus en premier dans le setter de mon panelGrid...

    Si tu as réponse à ça, un grand merci. Et un énorme merci pour avoir reglé mon problème, j'étais tellement focus sur la solution proposée par le site, que je n'ai même pas pensé a rendre mon truc plus logique (car en général les getters et setter sont vide !).
    il faut suivre les phases JSF, parfois les les loguer peut être intéressant, la méthode est dans la FAQ;
    mais, getter/setter sont ne sont pas faits pour le traitement, c'est juste des getter et setter...
    et dans JSF n'assure pas le nombre d'appels de ses méthodes pendant le cycle de la requête.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 90
    Par défaut
    Ok.

    Et oui les getters et setters doivent rester ce qu'ils sont. J'en sors grandit de cette expérience, c'est bien ^^

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

Discussions similaires

  1. RichFaces Rerender Div
    Par Ho(c)ine. dans le forum JSF
    Réponses: 4
    Dernier message: 23/06/2009, 15h29
  2. richfaces reRender hide
    Par bassbaki dans le forum JSF
    Réponses: 3
    Dernier message: 02/01/2009, 11h46
  3. Richfaces rerender tableau
    Par citizen_walker dans le forum JSF
    Réponses: 1
    Dernier message: 08/10/2008, 18h19
  4. [richfaces] reRender en javascript
    Par monstor dans le forum JSF
    Réponses: 2
    Dernier message: 29/05/2008, 12h31
  5. [RichFaces] Rerender des composants coté java
    Par Mediii dans le forum JSF
    Réponses: 10
    Dernier message: 12/12/2007, 12h15

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