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 :

utilisation d'un filter dans JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 185
    Par défaut utilisation d'un filter dans JSF
    Bonjour,

    sur une application jsf, j'utilise un Filter pour gerer l'expiration de la session.
    La navigation vers des pages d'erreur je la fais avec NavigationHandler car mes forward global sont défini dans faces-config.xml. j'accède au context avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FacesContext context = FacesContext.getCurrentInstance();
    mon problème est que context est null.

    est ce quelqu'un à une piste?
    merci dpar avance

  2. #2
    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
    tu le fais dans le filter?

    le filter tu l'utilise ou tu essaye de l'utiliser?? je veux dire le problème de l'expiration de session est déjà geré ou ce que tu essaye de faire?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 185
    Par défaut
    merci pour ta reponse,
    en fait j'ai résolu le problème de FacesContext qui est null gràce à ce lien http://www.thoughtsabout.net/blog/archives/000033.html

    il me reste de pouvoir naviguer avec NavigationHandler en utilisant la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     navigation.handleNavigation(context, null, outcome);
    outcome correspond à la balise <from-outcome> dans faces-config

    il me sort l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    java.lang.NullPointerException
    	at com.sun.faces.application.NavigationHandlerImpl.getViewId(NavigationHandlerImpl.java:175)
    ...
    merci par avance

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    Bonjour,

    J'ai le même problème, mais pas au niveau du FacesContext, plutôt sur le navigationHandler, il me sort la même exception. Je ne sais pas si tu a réussi à corriger le problème, si c'est le cas j'aimerais connaitre ta solution.

    J'ai bien mis la balise lifecycle dans le fichier faces-config.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <lifecycle>
            <phase-listener>
                    com.smartattitudes.pumaproject.listener.LoggedInCheck
            </phase-listener>
    </lifecycle>
    Dans la classe LoggedInCheck j'ai réécrit la méthode "beforePhase" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public void beforePhase(PhaseEvent event) {        
            if(FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("isLog") != null){
                System.out.println("log !!!");
            }else{
                FacesContext cst = event.getFacesContext();
                Application app = cst.getApplication();
                NavigationHandler nav = app.getNavigationHandler();
                nav.handleNavigation(cst, null, "logout");
            }
    }
    Voici la "navigation rule" :

    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
     
    <navigation-rule>
            <from-view-id>/login.jsp</from-view-id>
            <navigation-case>
                <from-outcome>sucess</from-outcome>
                <to-view-id>/mainpage.jsp</to-view-id>
                <redirect/>
            </navigation-case>
        </navigation-rule>
    <navigation-rule>
    <navigation-rule>
            <from-view-id>*</from-view-id>
            <navigation-case>
                <from-outcome>logout</from-outcome>
                <to-view-id>/login.jsp</to-view-id>
                <redirect/>
            </navigation-case>
    </navigation-rule>
    Et voila l'erreur générée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
    java.lang.NullPointerException
            at com.sun.faces.application.NavigationHandlerImpl.clearViewMapIfNecessary(NavigationHandlerImpl.java:228)
            at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:179)
            at com.smartattitudes.pumaproject.listener.LoggedInCheck.beforePhase(LoggedInCheck.java:35)
    J'ai essayé de redirigé vers une autre page et ça marche en mettant ces paramètre dans la méthode handleNavigation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nav.handleNavigation(cst, "sucess", "sucess");
    Donc voila je suis un peu surpris, je ne sais pas comment faire pour résoudre ce problème.

    Merci d'avance

    Erouan

    Edit :

    Bon j'ai trouvé mon erreur il fallait redéfinir la méthode afterPhase et non pas la méthode beforePhase. Par contre maintenant il me sort une autre erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    javax.faces.application.ViewExpiredException: viewId:/mainpage.jsp - View /mainpage.jsp could not be restored.
    Étant donné que j'utilise Richfaces, c'est peut-être lui qui me fait cette erreur ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/05/2013, 16h50
  2. Utilisation de filter() dans une boucle foreach
    Par webcreanord dans le forum Langage
    Réponses: 7
    Dernier message: 19/03/2013, 15h56
  3. Réponses: 0
    Dernier message: 15/03/2013, 13h12
  4. utiliser Tiles dans JSF
    Par titawine dans le forum JSF
    Réponses: 0
    Dernier message: 10/04/2012, 00h09

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