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 :

Filter et redirection : css non appliqué


Sujet :

JSF Java

  1. #1
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut Filter et redirection : css non appliqué
    Bonjour à tous !

    J'ai un souci avec JSF et visiblement un Filter que j'ai codé.
    Le rôle du filter et d'aller récupérer un managed bean stocké en session pour voir si un utilisateur est connecté ou non. S'il l'est pas il est redirigé vers une page de login.

    J'utilise également Richfaces et Tomahawk, je ne sais pas si leurs filtres peuvent générer des conflits donc je préfère le préciser.

    Voici le filtre que j'ai codé :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    public class LoginFilter implements Filter{
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            FacesContext fc = getFacesContext(request, response);
            UserController uc = (UserController) fc.getELContext().getELResolver().getValue(fc.getELContext(), null, "user");
     
            if(uc.getLogged().getId() == 0){
                request.getServletContext().getRequestDispatcher("/login.jsf").forward(request, response);
                return;
            }
     
             chain.doFilter(request, response);
        }
     
        private FacesContext getFacesContext(ServletRequest request, ServletResponse response) {
            HttpServletRequest rq = (HttpServletRequest) request;
          // Try to get it first
          FacesContext facesContext = FacesContext.getCurrentInstance();
          if (facesContext != null) return facesContext;
     
          FacesContextFactory contextFactory = (FacesContextFactory)FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
          LifecycleFactory lifecycleFactory = (LifecycleFactory)FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
          Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
     
          // Either set a private member servletContext = filterConfig.getServletContext();
          // in you filter init() method or set it here like this:
          // ServletContext servletContext = ((HttpServletRequest)request).getSession().getServletContext();
          // Note that the above line would fail if you are using any other protocol than http
     
            // Doesn't set this instance as the current instance of FacesContext.getCurrentInstance
             facesContext = contextFactory.getFacesContext(rq.getSession().getServletContext(), request, response, lifecycle);
     
             // Set using our inner class
            InnerFacesContext.setFacesContextAsCurrentInstance(facesContext);
     
            // set a new viewRoot, otherwise context.getViewRoot returns null
            UIViewRoot view = facesContext.getApplication().getViewHandler().createView(facesContext, "yourOwnID");
            facesContext.setViewRoot(view);
     
            return facesContext;
        }
     
        public void init(FilterConfig filterConfig) throws ServletException {
     
        }
     
     
     
        public void destroy() {
     
        }
     
        private abstract static class InnerFacesContext extends FacesContext
        {
            protected static void setFacesContextAsCurrentInstance(FacesContext facesContext) {
            FacesContext.setCurrentInstance(facesContext);
        }
     
     
    }
    C'est donc dans le doFilter() que je fais le test. Le reste du code je l'ai repris d'un autre topic sur un autre forum et cela me permet de pouvoir récupérer un FacesContext et donc mon managed bean.

    Le souci vient du fait que lorsque je lance mon application j'arrive sur ma page de login mais le css n'est pas pris en compte. Il le devient lorsque je suis connecté.

    Ma façon de procéder dans doFilter() pose-t-elle des problèmes ?

    Merci d'avance pour vos réponses

  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
    Points : 5 059
    Points
    5 059
    Par défaut
    tu peux montrer le code du web.xml,
    tu peux aussi le faire dans le phaseListener dans la phase render_response.

  3. #3
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    Voici mon fichier web.xml :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <context-param>
            <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
            <param-value>server</param-value>
        </context-param>
        <context-param>
            <param-name>org.richfaces.SKIN</param-name>
            <param-value>blueSky</param-value>
        </context-param>
        <context-param>
            <param-name>org.richfaces.CONTROL_SKINNING</param-name>
            <param-value>enable</param-value>
        </context-param>
        <context-param>
            <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
            <param-value>.xhtml</param-value>
        </context-param>
        <filter>
            <display-name>RichFaces Filter</display-name>
            <filter-name>richfaces</filter-name>
            <filter-class>org.ajax4jsf.Filter</filter-class>
        </filter>
        <filter>
            <filter-name>LoginFilter</filter-name>
            <filter-class>com.globus.entities.session.LoginFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>LoginFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
     
     
        <filter-mapping>
            <filter-name>richfaces</filter-name>
            <servlet-name>Faces Servlet</servlet-name>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
            <dispatcher>INCLUDE</dispatcher>
        </filter-mapping>
        <listener>
            <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
        </listener>
        <filter>
            <filter-name>extensionsFilter</filter-name>
            <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
            <init-param>
                <description>Set the size limit for uploaded files.
                    Format: 10 - 10 bytes
                            10k - 10 KB
                            10m - 10 MB
                            1g - 1 GB</description>
                <param-name>uploadMaxFileSize</param-name>
                <param-value>100m</param-value>
            </init-param>
            <init-param>
                <description>Set the threshold size - files
                        below this limit are stored in memory, files above
                        this limit are stored on disk.
     
                    Format: 10 - 10 bytes
                            10k - 10 KB
                            10m - 10 MB
                            1g - 1 GB</description>
                <param-name>uploadThresholdSize</param-name>
                <param-value>100k</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>extensionsFilter</filter-name>
            <url-pattern>*.jsf</url-pattern>
        </filter-mapping>
        <filter-mapping>
            <filter-name>extensionsFilter</filter-name>
            <url-pattern>/faces/*</url-pattern>
        </filter-mapping>
        <!-- Faces Servlet -->
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <!-- Faces Servlet Mapping -->
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>*.jsf</url-pattern>
        </servlet-mapping>
        <login-config>
            <auth-method>BASIC</auth-method>
        </login-config>
        <welcome-file-list>
            <welcome-file>/login.jsf</welcome-file>
        </welcome-file-list>
    </web-app>
    Je vais essayer de me pencher sur la phase render_response. Est-ce que c'est un meilleur endroit pour le faire ?

  4. #4
    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
    Points : 5 059
    Points
    5 059
    Par défaut
    Dans la page de login le user n'est pas authentifié, donc,seules les ressources non protégées seront accessibles.
    Il suffit de rendre les css accessible

  5. #5
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Devops
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Points : 843
    Points
    843
    Par défaut
    J'ai changé l'url pattern que j'ai remplacé par *.jsf et cela fonctionne.

    Merci pour ton aide

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

Discussions similaires

  1. CSS non appliquée sur une table dynamique IE8
    Par kap dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 02/04/2011, 15h42
  2. [CSS 2.1] CSS non appliquée
    Par thibotus01 dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 25/06/2010, 10h27
  3. CSS non appliqué à l'HTML5
    Par Boris56 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 20/05/2010, 01h02
  4. [URL Rewriting] CSS non appliquée dans l'url réécrite
    Par guigui5931 dans le forum Apache
    Réponses: 2
    Dernier message: 06/12/2007, 15h07
  5. [Joomla!] CSS non appliquées
    Par tiger33 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 25/11/2007, 18h52

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