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 :

PhaseListener à double


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut PhaseListener à double
    Bonjour,

    Je m'essaie au framework JSF, et pour comprendre le cycle de vie plus dans le détail, j'ai voulu implémenter mon propre PhaseListener pour analyser chaque étape, et pour comprendre dans quels cas (exactement) on "saute" certaines étapes du cycle de vie (on passe du restore view directement au render response).

    Bref, j'ai donc créé ma classe monPhaseListener dans le package CycleDeVie de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package CycleDeVie;
     
    import javax.faces.event.PhaseEvent;
    import javax.faces.event.PhaseId;
    import javax.faces.event.PhaseListener;
     
    public class monPhaseListener implements PhaseListener {
     
        public PhaseId getPhaseId() {
            return PhaseId.ANY_PHASE;
        }
     
        public void beforePhase(PhaseEvent e) {
            System.out.println("Before "+e.getPhaseId());
        }
     
        public void afterPhase(PhaseEvent e) {
            System.out.println("After "+e.getPhaseId());
        }
    }
    Puis, j'ai ajouté les références à mon phaseListener dans le fichier faces-config.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <lifecycle>
            <phase-listener>CycleDeVie.monPhaseListener</phase-listener>
    </lifecycle>
    Et, pour être sûr que mon phaseListener soit bien reconnu par JSF, j'affiche tous les phases listeners du système (pour chercher le mien). J'ai donc ajouté cette méthode à un bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PhaseListener[] listeners = ((LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY)).getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE).getPhaseListeners();
     
    System.out.println("PhaseListeners : ");
    for(PhaseListener listener: listeners) {
            System.out.println("\t"+ listener.getClass().getName());
    }
    Et là, surprise, je ne me retrouve non pas avec 2 phases listeners (celui du système et le mien), mais avec 3 phases listeners, dont deux fois le mien ! Voilà ce que me retourne cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PhaseListeners : 
            CycleDeVie.monPhaseListener
            CycleDeVie.monPhaseListener
            com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl
    Et, bien entendu, lorsque j'affiche quelque chose dans beforePhase de monPhaseListener, l'information est affichée deux fois pour chaque phase.

    Là, je ne comprends plus trop... Pourquoi mon phaseListener personnalisé est pris en compte à double ?

    Merci d'avance.

  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
    pourrais tu faire le meme essaie en utilisant facelet au lieux du jsp.
    je voudrais verifier qque chose avant de dire une connerie

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut
    Hello,

    Merci de ta réponse. Je ne connaissais pas facelet, je commence à découvrir cela... Néanmoins, j'ai créé un nouveau projet sur un autre poste. J'ai copié mon bean, mes pages JSP, mes configurations de web.xml et faces-config.xml, ainsi que mon phase listener. Et là, surprise, tout fonctionne à merveille, je n'ai qu'un seul phase listener, le miens, et il fonctionne comme il faut... Je vais tout de même essayer, sur le projet qui pose problème, d'utiliser facelet et je mettrai le retour ici.

    Merci !

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/09/2003, 12h38
  2. division de "double" par "0"
    Par ickis dans le forum C
    Réponses: 14
    Dernier message: 31/08/2003, 20h09
  3. abs pour un long double
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 23/07/2003, 17h16
  4. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 21h22
  5. Réponses: 3
    Dernier message: 12/06/2002, 22h15

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