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] Probleme de lancement


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut [JSF] Probleme de lancement
    Bonjour a tous,

    Voila étant un bon débutant dans les JSF je rencontre un problème de déploiement.

    J’ai télécharger le JSF 1.1 et je m’aide du tuto JSF KickStart: A Simple JavaServer Faces Application que lon trouve ici ( http://www.exadel.com/tutorial/jsf/j...ickstart.html).

    Je rencontre déjà un problème quand j’essaie de déployer le .war des exemples que l’on trouve dans la JSF 1.1 et j’ai aussi un problème quand j’essaie de faire fonctionner l’exemple du tuto.

    Alors j’utilise eclipse 3.2 et Tomcat 5.5 en Win XP.
    Problèmes 1, le déploiement d’un war.
    Il me met :
    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
     
    org.apache.jasper.JasperException: Exception in JSP: /index.jsp:55
     
    52: 
    53: -->
    54: 
    55: <jsp:forward page="guess/greeting.jsp" />
    56: </body>
    57: </html>
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    cause mère 
    javax.servlet.ServletException: "Servlet.init()" pour la servlet Faces Servlet a généré une exception
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:691)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:661)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:97)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    cause mère 
    java.lang.NullPointerException
    	javax.faces.webapp.FacesServlet.init(FacesServlet.java:144)
    	org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:691)
    	org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:661)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:97)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    pour le .war : jsf-guessNumber.

    Probleme 2 :
    Essaie de l’exemple du tuto, la j ai carement un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Etat HTTP 404 - /TestJSF/
    ________________________________________
    type Rapport d'état
    message /TestJSF/
    description La ressource demandée (/TestJSF/) n'est pas disponible.
    Pouvez vous m’aidée à résoudre ces problèmes car je ne vois pas ce que j’ai oublie ou ce qui cloche.

    Merci de votre aide.

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 50
    Par défaut
    Mmmmh. Alors, deja tu dois initialiser ta servlet JSF. En effet, si tu ne la charge pas avant de demader ta page JSF, tu n'as pas acces au context JSF et autres choses utiles.

    Donc, tu dois faire transiter tout le traffic JSF vers elle en ajoutant un url-pattern approprie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <servlet-mapping>
    <servlet-name>ta Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
    Pour dire que ta servlet va capturer tout ce qui passe par /faces/* .Puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <jsp:forward page="/faces/greeting.jsp" />
    La, trois remarques :

    - l'URL fournie dans ton <jsp:forward> doit commencer par un slash, meme si elle est relative a ton contexte. Et tu dois bien preciser que tu veux appeller ta servlet JSF en reprenant son URL-pattern.
    - le contexte est l'URL de base par laquelle ta servlet est accessible, donc dans ton cas : http://tonserveur/TestJSF/faces
    - quand tu vas faire ton forward, l'URL appellee sera donc : http://tonserveur/TestJSF/faces/greeting.jsp

    Si tu as envie de faire un forward vers /guess, pourquoi pas, mais alors l'URL-pattern de ta servlet doit etre guess aussi. OK ?

    Enfin, reponse au probleme 2 : tu obtiens une 404 qui signifie que la ressource n'est pas disponible (je ne fais que lire ton copie / colle !). Et c'est normal, vu que ta servlet JSF n'est pas chargee... Ca devrait se regler avec ce que je viens de t'envoyer.

    HTH,

    AlienQueen

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    Pour le 1er problème, je ne comprends toujours pas pourquoi il ne fonctionne pas, c est un .war qui viens directement des exemple se trouvant dans la lib des jsf 1.1 que j’ai download du site de sun. Je le déploie directement donc il devrais fonctionner vu que c est eu qui l’on fais. Mais chez moi non, il me donne directement l’erreur cité plus haut.

    http://127.0.0.1:8080/jsf-guessNumber/ et même en essayant comme ceci
    http://127.0.0.1:8080/jsf-guessNumber/faces/ cela ne fonctionne pas.

    Pour le problème 2, il y a du changement, j’avais mal mis mon index.jsp, il n’était pas dans la racine du Webcontent. Mais il me donne une autre erreur.
    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
     
    orrg.apache.jasper.JasperException: Exception in JSP: /index.jsp:13
     
    10: </head>
    11: <body>
    12: Hello World
    13: <h:commandLink action="inputname">GO test JSF</h:commandLink>
    14: </body>
    15: </html>
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.ServletException: Cannot find FacesContext
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:73)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.jsp.JspException: Cannot find FacesContext
    	javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:405)
    	com.sun.faces.taglib.html_basic.CommandLinkTag.doStartTag(CommandLinkTag.java:480)
    	org.apache.jsp.index_jsp._jspx_meth_h_005fcommandLink_005f0(index_jsp.java:89)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:63)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.5.23.
    Voici mon 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4"
    	xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
    	<display-name>TestJSF</display-name>
    	<context-param>
    		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    		<param-value>server</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>
     
    	<listener>
    		<listener-class>
    			com.sun.faces.config.ConfigureListener
    		</listener-class>
    	</listener>
     
    	<!-- 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>
     
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.htm</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>default.html</welcome-file>
    		<welcome-file>default.htm</welcome-file>
    		<welcome-file>default.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>
    et voici le face-config.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
     
    <?xml version="1.0"?>
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
     
    <faces-config>
    	<navigation-rule>
    		<navigation-case>
    			<from-outcome>inputname</from-outcome>
    			<to-view-id>jsp/inputname.jsp</to-view-id>
    		</navigation-case>
    		<navigation-case>
    			<from-outcome>greeting</from-outcome>
    			<to-view-id>jsp/greeting.jsp</to-view-id>
    		</navigation-case>
    	</navigation-rule>
    	<managed-bean>
    		<managed-bean-name>personBean</managed-bean-name>
    		<managed-bean-class>test.jsf.PersonBean</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
    </faces-config>
    Et j'ai aussi autre chose de bizarre, dans ma jsp je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:inputText value="#{personBean.personName}" />
    mais il me dis que personBean cannot be resolved, pourtant il est déclaré dans le faces-config.xml. Pourquoi me met'il cela ??
    D'ou viens les probléme car comme je le dis je début dans les JSF.

    Merci de votre aide

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Cannot find FacesContext signifie typiquement que tu ne passe pas par la FacesServlet.


    d'après ton web.xml

    ton URL doit être de la forme
    http://serveur/root/fichier.jsf

    pour accéder à fichier.jsp contenant des éléments JSF

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    J'ai edité mon post en même temps que ta reponse mad-math,

    maintenant j ai une erreur dans mon 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    orrg.apache.jasper.JasperException: Exception in JSP: /index.jsp:13
     
    10: </head>
    11: <body>
    12: Hello World
    13: <h:commandLink action="inputname">GO test JSF</h:commandLink>
    14: </body>
    15: </html>
     
     
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.ServletException: Cannot find FacesContext
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:73)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.jsp.JspException: Cannot find FacesContext
    	javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:405)
    	com.sun.faces.taglib.html_basic.CommandLinkTag.doStartTag(CommandLinkTag.java:480)
    	org.apache.jsp.index_jsp._jspx_meth_h_005fcommandLink_005f0(index_jsp.java:89)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:63)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    et dans le faces-config.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
     
    <?xml version="1.0"?>
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
     
    <faces-config>
    	<navigation-rule>
    		<navigation-case>
    			<from-outcome>inputname</from-outcome>
    			<to-view-id>/jsp/inputname.jsp</to-view-id>
    		</navigation-case>
    		<navigation-case>
    			<from-outcome>greeting</from-outcome>
    			<to-view-id>/jsp/greeting.jsp</to-view-id>
    		</navigation-case>
    	</navigation-rule>
    	<managed-bean>
    		<managed-bean-name>personBean</managed-bean-name>
    		<managed-bean-class>test.jsf.PersonBean</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
    </faces-config>
    un lien ne fonction pas comme cela en jsf ??

    et pour mon personBean cannot be resolved, quelqu'un sais pourquoi.

    Merci.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Tu dois définir une vue

    balises

    <f:view> et </f:view>

    qui englobent l'ensemble de tes formulaires.

    De plus ton bouton doit être inclus entre <h:form> et <h:form>

    bref un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html>
    <head>
    </head>
    <f:view>
    <body>
    Hello World
    <h:form>
    <h:commandLink action="inputname">GO test JSF</h:commandLink>
    </h:form>
    </body>
    </f:view>
    </html>
    pour l'attribut action du bouton :
    - Soit tu met un binding vers une méthode de type action d'un managed bean
    - Soit directement un strig (comme ici) et c'est considéré comme Outcome

  7. #7
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    J'ai fais comme tu m'as dit,

    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
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Index of JSF</title>
    </head>
    <body>
    <f:view>
    	<h:form>
    		<h:commandLink action="inputname">GO test JSF</h:commandLink>
    	</h:form>
    </f:view>
    </body>
    </html>
    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
    <?xml version="1.0"?>
    <!DOCTYPE web-app PUBLIC 
      "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
      "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    	<display-name>TestJSF</display-name>
    	<context-param>
    		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    		<param-value>server</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>
     
    	<listener>
    		<listener-class>
    			com.sun.faces.config.ConfigureListener
    		</listener-class>
    	</listener>
     
    	<!-- 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>
     
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.htm</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>default.html</welcome-file>
    		<welcome-file>default.htm</welcome-file>
    		<welcome-file>default.jsp</welcome-file>
    	</welcome-file-list>
    </web-app>
    faces-config.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
    <?xml version="1.0"?>
    <!DOCTYPE faces-config PUBLIC
      "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
      "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
     
    <faces-config>
    	<navigation-rule>
    		<navigation-case>
    			<from-outcome>inputname</from-outcome>
    			<to-view-id>/jsp/inputname.jsp</to-view-id>
    		</navigation-case>
    		<navigation-case>
    			<from-outcome>greeting</from-outcome>
    			<to-view-id>/jsp/greeting.jsp</to-view-id>
    		</navigation-case>
    	</navigation-rule>
    	<managed-bean>
    		<managed-bean-name>personBean</managed-bean-name>
    		<managed-bean-class>test.jsf.PersonBean</managed-bean-class>
    		<managed-bean-scope>request</managed-bean-scope>
    	</managed-bean>
    </faces-config>
    mais toujours la même chose
    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
    exception
     
    org.apache.jasper.JasperException: Cannot find FacesContext
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:476)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.ServletException: Cannot find FacesContext
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:78)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère
     
    javax.servlet.jsp.JspException: Cannot find FacesContext
    	javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:405)
    	com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:105)
    	org.apache.jsp.index_jsp._jspx_meth_f_005fview_005f0(index_jsp.java:93)
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:68)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Je comprend vraiment pas ce qui cloche.

    pourtant j'ai les lib donc dans WebContent/WEB-INF/lib
    commons-beanutils.jar
    commons-collections.jar
    commons-digester.jar
    commons-logging.jar
    jsf-api.jar
    jsf-impl.jar
    jstl.jar
    standard.jar

    Rappel, je suis sous eclipse 3.2, java 5, tomcat 5.5 et j'essaie d'utiliser les JSF 1.1.

    Le probléme serait t'il du a une mauvaise version des lib, fichier web et faces-config???

    Je deviens fou

    Merci

  8. #8
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    Quand je lance directement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1:8080/TestJSF/jsp/inputname.jsf
    cela fonctionne mais pourquoi ne veut t'il pas lancer mon index.jsp ou je mes un simple liens pour lancer le inputname comme montrer plus haut???

  9. #9
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Citation Envoyé par LeSnul
    Quand je lance directement par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1:8080/TestJSF/jsp/inputname.jsf
    cela fonctionne mais pourquoi ne veut t'il pas lancer mon index.jsp ou je mes un simple liens pour lancer le inputname comme montrer plus haut???
    Parce-que dans ton web.xml tu spécifie l'extension .jsf comme étant des fichiers à traiter avec JSF

    <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    Les autres extensions (dont JSP) ne passe pas par le système JSF d'ou l'erreur de contexte.

    Si tu veux que par défaut tout les JSP soit des pages JSF alors met *.jsp dans le pattern à la place de *.jsf

  10. #10
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    oki merci, mais pour lancer par default mon index.jsp en laissant le *.jsf dans le mapping, je dois rajouter quelquechose pour que ça passe ou faut faire autre chose, car j'ai trouver que le l'erreur venait aussi lorsque l'on utilise du jsf dans une page et que cette même page n'est pas mappé dans le faces-config.xml

  11. #11
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Désespéré

    URL-------- Patern---------Résultat
    fichier.jsp----*.jsf -------- PAS BON
    fichier.jsf ---- *.jsf -------- BON
    fichier.jsp---- *.jsp -------- BON

    Si tu lance fichier.JSP en laissant *.JSF ça ne peut pas marcher. c'est tout.

    Il faut raisonner en terme d'URL pas de fichier

    les URL fichier.jsf et fichier.jsp pointent sur le même fichier.jsp seulement le .jsf passe par la servlet JSF

  12. #12
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    Envoie des pilules contre la dépression à mad-math.

    Oki j’ai réussi a faire fonctionner ma petite applique, mais j’ai du faire un fichier index.html (qui ne contient pas de code JSF) qui fais un forward vers mon index.jsf (mon fichier index.jsp qui lui contient du code JSF) car comme tu le dis si bien j’ai déclaré le pattern en .JSF pour qu’il passe mes fichier dans la servlet JSF.

    Autre petite question, ce que l on déclare dans le fichier de faces-config.xml, c’est seulement accessible par un appel de bouton donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:form id="helloForm">
    		<h:commandButton action="inputname" value="inputname" />
    	</h:form>
    Et pas par un lien donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:outputLink value="inputname">
    		<h:outputText value="GO JSF" />
    	</h:outputLink>
    vu que dans le faces-config je lui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <navigation-case>
    			<from-outcome>inputname</from-outcome>
    			<to-view-id>/jsp/inputname.jsp</to-view-id>
    		</navigation-case>
    Merci de votre patience mais c'est pour bien comprendre.

  13. #13
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Alors il me semble que :

    h:outputLink sert juste de lien, ne provoque pas de submit et donc ne peut pas utiliser les navigation rules


    par contre


    h:commandLink te fera un lien dans lequel tu pourra placer un outcome dans l'attribut action (ou une méthode action de managed bean)

  14. #14
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    Voila cela fonctionne mais es-ce normal que le h:commandLink doit se trouver dans un h:form car s'il est en dehors il fait un NullPointerException
    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:form id="helloForm">
    		<h:commandLink action="inputname">
    			<f:verbatim>GO JSF</f:verbatim>
    		</h:commandLink>
    </h:form>
    OK

    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		<h:commandLink action="inputname">
    			<f:verbatim>GO JSF</f:verbatim>
    		</h:commandLink>
    KO ==> NullPointerException

    et pour le h:outputLink il faut mettre ou le trouver avec le .JSF sinon il ne passe pas dans la Servlet JSF et donnera une belle erreur du style
    org.apache.jasper.JasperException: Cannot find FacesContext

    pas vrai mad-math (tu voix je comprend vite )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:outputLink value="jsp/inputname.jsf">
    		<f:verbatim>GO test JSF</f:verbatim>
    </h:outputLink>

  15. #15
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    Je vais m'auto repondre,

    Oui c'est normal que tu as un NullPointerException vu que c’est une action donc comme un submit (comme dans un formulaire struts ou dans un formulaire html simple) donc oui ca doit se trouver dans un h:form sinon cela ne fonctionne pas.



    Encore merci pour ton aide mad-math car j'ai les idées plus claire sur les JSF. Me reste plus car transformer un petit projet que j'ai fais en struts en JSF pour pouvoir comparer. Mais mad-math tu as peut être déjà fais la comparaison si oui quel est-elle.

  16. #16
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    J'ai attaqué direct sur JSF ... DSL

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

Discussions similaires

  1. [Système][Process]Probleme de lancement d'un .sh
    Par jool dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 04/05/2005, 11h58
  2. [NetBeans] Probleme au lancement NetBeans
    Par boubou11 dans le forum NetBeans
    Réponses: 2
    Dernier message: 21/04/2005, 11h38
  3. [Kylix] Problème au lancement d'un programme
    Par jeanbi dans le forum EDI
    Réponses: 7
    Dernier message: 19/01/2005, 23h00
  4. [Linux]probleme au lancement d'eclipse sur mandrake 10
    Par Dnx dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/09/2004, 19h34
  5. [Tomcat] [eclipse] probleme au lancement de mes jsp
    Par sandusa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 11/05/2004, 14h59

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