2010-01-02 4 views
1

J'ai créé un projet Java Dynamic Web simple dans Eclipse. J'héberge mon projet sur Glassfish 2.1.1. Lorsque j'essaie d'ouvrir la page p1.jsf dans le navigateur, j'ai l'erreur suivante: javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20.javax.servlet.ServletException: PWC1232: Profondeur maximale dépassée pour les envois de requêtes imbriqués: 20

Je ne sais pas comment corriger cette erreur ...

Voici mai p1.jsf Définition:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<f:view> 
    <h:outputLabel value="outputLabel"></h:outputLabel> 
</f:view> 
</body> 
</html> 

Mon web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>web4</display-name> 
    <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> 
    <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>*.jsf</url-pattern> 
    </servlet-mapping> 
</web-app> 

Mes visages-config. xml:

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 
    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-facesconfig_1_2.xsd" 
    version="1.2"> 

</faces-config> 

Détails de l'erreur du journal Glassfish:

PWC1406: Servlet.service() for servlet FacesServlet threw exception javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20 
org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:860) 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723) 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:558) 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:490) 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:382) 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410) 
com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:468) 
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140) 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) 
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427) 
org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:873) 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723) 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:558) 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:490) 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:382) 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410) 
com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:468) 
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140) 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) 
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427) 
org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:873) 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723) 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:558) 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:490) 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:382) 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410) 
com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:468) 
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140) 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) 
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427) 
org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:873) 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723) 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:558) 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:490) 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:382) 
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410) 
com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:468) 
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140) 
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) 
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) 

Répondre

4
  1. FacesServlet doit être mis en correspondance sur un url-pattern de *.jsf (ou autre chose que *.jsp).
  2. Aucun fichier javax.faces.DEFAULT_SUFFIX n'est requis dans le fichier web.xml si vous utilisez déjà JSP. La page JSP elle-même doit être nommée pagename.jsp (et donc et nonpagename.jsf, c'est la cause première des appels directs récursifs).
  3. Ouvrir la page dans le navigateur Web en utilisant le suffixe *.jsf: http://example.com/context/pagename.jsf (et donc pas par pagename.jsp, sinon vous obtiendrez RuntimeException: FacesContext not found).
0

Cela signifie que l'interne récursif se produit. Quelques points à observer:

  • assurez-vous d'accéder à la page via le suffixe approprié. à-dire http://localhost:8080/app/p1.jsp, et non p1.page - vous avez tracé le suffixe jsf être .jsp
  • vérifier vos règles de navigation dans vos faces-config.xml
  • assurez-vous que les éléments suivants contexte défini param:

    <context-param> 
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
        <param-value>.jsp</param-value> 
    </context-param> 
    

Pour résumer - le javax.faces.DEFAULT_SUFFIX détermine l'extension de fichier sous lequel la page sont recherchés, et la <url-pattern> des faces servlet détermine la façon dont les pages sont accessibles par jsf clients (navigateurs)

+0

J'accède à la page via l'adresse http: // localhost: 18080/web1/p1.jsp. Si je change le nom de fichier de page en p1.jsf et le modèle d'URL en * .jsf j'ai toujours le même problème. J'ai ajouté faces-config.xml à la question abowe. – Rafal

+0

mais votre fichier s'appelle p1.page? Si oui, renommez le en .jsp – Bozho

+0

Non, le fichier a été nommé p1.jsp. En post a fait une erreur, désolé. – Rafal

Questions connexes