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 :

Problème de navigation rule avec JSF


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut Problème de navigation rule avec JSF
    Bonjour,

    Je voulais me lancer dans les jsf et je bloque assez rapidement sur la notion de regle de navigation.

    Voila mon application :

    Une page d'accueil : index.jsp qui possede un formulaire login / password qui est sousmis grace à la methode validate(). Si le test est concluant ça envoie sur une page accueil.jsp sinon erreur.jsp.

    Voila les differents fichiers :

    Web.xml ( uniquement la partie jsf )

    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
     
    	<!-- Configuration de JSF -->
    	<context-param>
    		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    		<param-value>client</param-value>
    	</context-param>
     
    	<context-param>
    	    <param-name>javax.faces.CONFIG_FILES</param-name>
    	    <param-value>/WEB-INF/faces-config.xml</param-value>
      	</context-param>
     
    	<servlet>
    		<servlet-name>FacesServlet</servlet-name>
    		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>FacesServlet</servlet-name>
    		<url-pattern>/faces/*</url-pattern>
    	</servlet-mapping>
    	<!-- Fin de la configuration de JSF -->
    Mon faces-config :

    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
     
    <faces-config>
    	<application>
    		<locale-config>
    			<default-locale>fr</default-locale>
    		</locale-config>
    	</application>
     
    	<managed-bean>
    		<managed-bean-name>user</managed-bean-name>
    		<managed-bean-class>home.my.vue.UserBean</managed-bean-class>
    		<managed-bean-scope>session</managed-bean-scope>
    	</managed-bean>
     
    	<navigation-rule>
     
    		<from-view-id>/index.jsp</from-view-id>
     
    		<navigation-case>
    			<from-outcome>loginSuccess</from-outcome>
    			<to-view-id>/pages/accueil.jsp</to-view-id>
    		</navigation-case>
     
    		<navigation-case>
    			<from-outcome>loginFail</from-outcome>
    			<to-view-id>/erreur.jsp</to-view-id>
    		</navigation-case>
     
    	</navigation-rule>
     
    </faces-config>
    Mon formulaire index.jsp :

    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
     
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
     
    <core:view>
     
    	<html:form>
     
    		<html:outputText value="Identifiant / login : " />
    		<html:inputText value="#{user.loginUser}" />
    		<br/>
    		<html:outputText value="Mot de passe : " />
    		<html:inputSecret value="#{user.passwordUser}" />
    		<br/>
    		<html:commandLink action="#{user.validate}" value="Connection" />
     
    	</html:form>
     
    </core:view>
    La methode de la classe UserBean qui permet de valider mes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public String validate(){
    		if (this.loginUser.equals("A") && this.passwordUser.equals("A")){
    			return "loginSuccess";
    		}
    		else{
    			return "loginFail";
    		}
    	}
    Mon soucis :

    Quoi qu'il arrive ça ne fait que recharger la page index.jsp et ça ne redirige pas du tout la ou ça devrait.... J'ai lu que ça avait se comportement si la methode retourne "null" mais ce n'est pas le cas je l'ai passé au debuggeur...
    Donc est ce que qqun voit qqch qui ne va pas ?

  2. #2
    Membre régulier Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par anapotheque Voir le message
    Bonjour,
    Mon soucis :
    Quoi qu'il arrive ça ne fait que recharger la page index.jsp et ça ne redirige pas du tout la ou ça devrait.... J'ai lu que ça avait se comportement si la methode retourne "null" mais ce n'est pas le cas je l'ai passé au debuggeur...
    Donc est ce que qqun voit qqch qui ne va pas ?
    Apparemment c'est ok, mais si tu ne vois pas l'url changer dans la barre de navigation c'est parce qu'il n'y a pas la balise <redirect/> dans tes <navigation-case>. Sans cette balise la vue cible se charge mais l'url restera index.jsp. Maintenant tu peux nous montrer le code des deux pages cibles (erreur et accueil) pour voir.
    Don't worry, be happy

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     c'est parce qu'il n'y a pas la balise <redirect/> dans tes <navigation-case>.
    Je n'ai jamais eu recours à une quelconque balise <redirect/> pour ce mécanisme. Normalement ca devrait marcher ce que t'as fait, as tu mis un point d'arret dans ta methode validate pour voir si etait appelée? ou simplement un println pour voir? Sinon essaie aussi ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <navigation-case>
                            <from-action>#{user.validate}</from-action>
    			<from-outcome>loginSuccess</from-outcome>
    			<to-view-id>/pages/accueil.jsp</to-view-id>
    		</navigation-case>
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    alors concernant les deux pages erreur.jsp et accueil.jsp les voila :

    erreur.jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
     
    <core:view>
     
    	erreur
     
    </core:view>
    et accueil.jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%@ page contentType="text/html" %>
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="html" %>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="core" %>
     
    <core:view>
     
    	Welcome
     
    </core:view>
    Concernant l'arborescence du projet c'est :

    WebContent : la à la racine on a erreur.jsp et index.jsp et puis dans un sous repertoire pages/acceuil.jsp.

    Et oui la methode validate est bien appelée ( j'ai mis un point d'arret afin de verifier que les "outcome" soient corrects

  5. #5
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:outputText value="erreur" />
    , ca ira mieux ainsi. essaie ce que je t'ai envoyé plus haut et redis nous.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    alors j'ai essayé d'ajouter un from-action ça n'a eu aucun effet mais parcontre ça m'a laissé une trace :

    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
     
    GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception
    javax.servlet.jsp.JspException: Cannot find FacesContext
    	at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:427)
    	at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:125)
    	at org.apache.jsp.index_jsp._jspx_meth_core_005fview_005f0(index_jsp.java:93)
    	at org.apache.jsp.index_jsp._jspService(index_jsp.java:71)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:257)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Unknown Source)
    23 juil. 2010 11:36:51 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet jsp a généré une exception
    javax.servlet.jsp.JspException: Cannot find FacesContext
    	at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:427)
    	at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:125)
    	at org.apache.jsp.index_jsp._jspx_meth_core_005fview_005f0(index_jsp.java:93)
    	at org.apache.jsp.index_jsp._jspService(index_jsp.java:71)
    	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
    	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:257)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    	at java.lang.Thread.run(Unknown Source)
    Donc en gros il trouve pas mon face context. Et la ben je comprends pas ce qu'il manque...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Points : 82
    Points
    82
    Par défaut
    TROUVEEEEEE !!!!!!

    Voila les modifications que j'ai apporté !!!
    Au lieu de demarer directement sur une page type JSF j'ai fait en sorte que le projet demarre sur une page type hmtl ( index.hmtl ) qui me redirige en fait vers ma page de login "login.jsp" se trouvant sous "pages".

    Donc voila cette fameuse page index.html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html>
    	<head>
    		<meta http-equiv="Refresh" content= "0; URL=faces/pages/login.jsp"/>
    		<title>Start My</title>
    	</head>
    	<body>
    		<p>Please wait for the web application to start.</p>
    	</body>
    </html>
    concernant mes nouvelles regles de navigation les voicis :

    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>/pages/login.jsp</from-view-id>
     
    		<navigation-case>
    			<from-action>#{user.validate}</from-action>
    			<from-outcome>loginSuccess</from-outcome>
    			<to-view-id>/pages/accueil.jsp</to-view-id>
    		</navigation-case>
     
    		<navigation-case>
    			<from-action>#{user.validate}</from-action>
    			<from-outcome>loginFail</from-outcome>
    			<to-view-id>/pages/erreur.jsp</to-view-id>
    		</navigation-case>
     
    	</navigation-rule>
    J'ai donc pris le coté from-action car je trouve ça plus propre meme si ici ça n'a pas grand interet je pense.

    Donc voila apres ces quelques modifications ça a fonctionné merveilleusement bien. Je vous remercie tous pour vos reponses.

    Je pense que j'ai pas fini de poster )))) Aller à la suite ))).
    Va falloir maintenant que je raccroche mon block spring hibernate et je dois dire que pour le moment c'est pas top ça pete un peu de partout car il ne trouve pas mes fichiers de configuration mais ceci est une autre histoire )))).


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

Discussions similaires

  1. Problème LoginFilter sur /j_security_check avec JSF
    Par Doudou (The) dans le forum JSF
    Réponses: 8
    Dernier message: 22/09/2010, 14h51
  2. Problème de listener, mémoire avec JSF
    Par curious_31 dans le forum JSF
    Réponses: 0
    Dernier message: 21/06/2010, 15h09
  3. Problème de navigation rule avec tomcat
    Par troubleshooting dans le forum JSF
    Réponses: 7
    Dernier message: 17/06/2009, 16h16
  4. Problème d'url pattern avec JSF+YUI
    Par lion13 dans le forum JSF
    Réponses: 4
    Dernier message: 18/12/2008, 15h24
  5. Problème de navigation réalisé avec CSS
    Par Mihai dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 18/09/2005, 18h51

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