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 problème avec actionListener d'un bouton


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut JSF et problème avec actionListener d'un bouton
    Salut,

    Voici mon problème, sur une page P1, j'ai un bouton qui permet d'ouvrir une autre page P2 et mettre à jour le nom du bouton qui se trouve sur la page P2
    ET le bouton de la page P2 doit rendre visible un popup lorsque l'on clique dessus.

    Mon problème est le suivant, lorsque ma page P2 s'ouvre le nom du bouton est correcte, par contre lorsque je clique sur le bouton pour rendre visible le popup, le nom prend sa valeur initiale.




    partie de code de la page P2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ice:commandButton value="#{gestionDocument.nomBoutonCreerDocument}" style="width:90px;" actionListener="#{gestionTypeTag.openPopup}"></ice:commandButton>
    classe gestionDocument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Stateless
    @Name("gestionDocument")
    public class GestionDocumentBean implements GestionDocument{
     
    	// Variables d'instance
            // Variable pour le changer le nom du bouton soit creer soit modifier
    	private String nomBoutonCreerDocument;
     
           // les getters et les setters
               ...
    code de l'action fait par le bouton de la page P2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void openPopup(){
        this.getNomBoutonCreerDocument("Ajouter")
    }
    En résumé, car je ne sais pas ci c'est trés clair : lorsque je clique sur le bouton de la page P1 => ouverture de la page P2 avec le nom du bouton de la page P2 = "Ajouter" et lorsque je clique sur le bouton Ajouter => ouverture de la popup mais le nom du bouton devient la chaine de caractère vide.

    Pourriez vous me dire pourquoi ?


    Je travail avec le framework seam 2.0.1.GA, le serveur d'application JBoss-4.2.0.GA et eclipse 3.3

    Merci

  2. #2
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    le scope de ton backing bean n'est pas request par hazard???
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    Et bien je n'ai pas d'annotation @Scope pour mon bean.

    Faut-il en mettre une ?
    Si oui, à quoi sert cette annotation ?

  4. #4
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    ???
    tu travail avec seam , j'ai pas vu ouups
    bon je sais pas pour seam mais t'as pas de fichier faces-config.xml ou tu definie les scope de tes backing bean ???
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    J'ai le fichier faces-config.xml mais d'aprés ce que j'ai compris avec seam ça ne marche pas pareil, je travail avec les annotations c'est à dire que je cré une classe par exemple GestionDocumentBean qui implémente une interface GestionDocument et cette classe GestionDocumentBean je l'annote avec @Name("GestionDocument") et dans mon fichier jsf je peux récupéréer des variables de ma classe java, en faisant #{GestionDocument.maVariable},
    Par contre, je viens de regarder pour ce qui est de l'annotation @Scope et ils en parlent aussi donc ça vient peut-être de là.

    Donc il faudrait mettre quoi pour le scope ?

  6. #6
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    utilise session
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  7. #7
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    J'ai annoté toutes mes classes avec @Scope(ScopeType.SESSION) mais malheureusement j'ai toujours le même problème

    Mais a quoi sert ce scope exactement?

  8. #8
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    bon le scope ca definit la duree de vie de ton backingbean
    si session c'est toute la session, si c'est request c'est un request
    bon pour mieux expliquer je coiyais que ton backing bean etais de scope request don lors de la premiere request quand tu passe de p1 a p2 tu agit sur le label de ton bouton et tu modifie, donc quand tu clique sur le bouton de p2 c'est un nouveau request donc une nouvelle instance de ton backing bean donc tu perd le value.
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  9. #9
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    OK, merci

    Mais du coup ça ne vient pas du scope vu que j'ai mis @Scope(SESSION) donc d'où cela pourrait venir ?

  10. #10
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    bon pour verifier si c'a vient pas de scope es que tu peux mettre une sortie comme System.ou.println("test") dans le constructeur de ton backing bean
    pour voir es qu'il est apple lorsque tu clique sur le bouton de ta page 2
    (on parle bien du backing bean ou il ya l'attribut concernat le label du bouton de la page P2)
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  11. #11
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    J'ai mis un system.err.println() dans le constructeur de la classe C2 où il y a la variable correspondant au nom du bouton et lorsque je clique sur le bouton qui permet d'ouvrir le popup il y a appel à ce constructeur et du coup ma variable est remise à sa valeur initiale

  12. #12
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    donc la t'as un scope request verifie bien avec la doc de seam comment le changer
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  13. #13
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    modifie le titre de ton message pour attirer les conaisseurs de seam mettre par exemple [SEAM] au debut
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

  14. #14
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut
    Je travail avec des classes qui sont en fait des EJB session bean, par conséquent, l'annotation @Scope(SESSION) n'a pas l'air de fonctionner, du coup j'ai fait un bean "normal", et là l'annotation @Scope à l'air de fonctionner, mais je dois vérifier quand même

  15. #15
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Points : 332
    Points
    332
    Par défaut
    bon j'arrive pas a constitue le benifice d'avoir un backing bean d'une page un EJB il sont fous ceux de JBOSS
    La connaissance est la seule chose qui s'accroit lorsqu'on la partage.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/10/2008, 15h31
  2. Problème avec traitement des evenements bouton
    Par ramon.dekker dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/09/2008, 09h13
  3. Probléme avec ActionListener
    Par DRACULA1 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 06/08/2008, 01h41
  4. Problème avec ActionListener
    Par Raadgever596 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/03/2008, 23h36
  5. Problème avec Goto pour un bouton de menu
    Par Klotian dans le forum Flash
    Réponses: 3
    Dernier message: 26/05/2006, 17h49

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