Pregunta

Si mi código, se produce una excepción, a veces - no siempre - el jsf presenta una página en blanco.Im usando facelets para el diseño.Un error similar se reportó en este Sol forumns post, pero sin respuestas.Alguien más con el mismo problema, o tiene una solución?;)

Debido a algunas peticiones.Aquí, hay que seguir más datails:

web.xml

 <error-page>
        <exception-type>com.company.ApplicationResourceException</exception-type>
        <location>/error.faces</location>
 </error-page>

Y la pila relacionado con jsf se imprime después de la excepción:

####<Sep 23, 2008 5:42:55 PM GMT-03:00> <Error> <HTTP> <comp141> <AdminServer> <[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1222202575662> <BEA-101107> <[weblogic.servlet.internal.WebAppServletContext@6d46b9 - appName: 'ControlPanelEAR', name: 'ControlPanelWeb', context-path: '/Web'] Problem occurred while serving the error page.
javax.servlet.ServletException: viewId:/error.xhtml - View /error.xhtml could not be restored.
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:249)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:525)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:261)
    at weblogic.servlet.internal.ForwardAction.run(ForwardAction.java:22)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(Unknown Source)
    at weblogic.servlet.internal.ErrorManager.handleException(ErrorManager.java:144)
    at weblogic.servlet.internal.WebAppServletContext.handleThrowableFromInvocation(WebAppServletContext.java:2201)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2053)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
javax.faces.application.ViewExpiredException: viewId:/error.xhtml - View /error.xhtml could not be restored.
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:180)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)

Estoy usando la versión jsf Mojarra 1.2_09, richfaces 3.2.1.GA y facelets 1.1.13.

Espero un poco de ayuda :(

¿Fue útil?

Solución

Creo que esto depende en gran medida de su aplicación JSF.He oído que algunos de render en blanco las pantallas.

La estábamos usando iba a tirar error 500 con una traza de la pila.Otras veces botones no funcionan sin ningún tipo de error para el usuario.Todo esto fue durante nuestra fase de desarrollo.

Pero el mejor consejo que te puedo dar es atrapar las excepciones y registro en un registro de errores para tener el seguimiento de la pila para la depuración posterior.Para los mensajes que no podíamos hacer nada acerca de como un backend su defecto que acaba de agregar un fatal mensaje para el FacesContext que se muestra en pantalla y registro de la traza de la pila.

Otros consejos

He arreglado un problema similar en mi error.jsp la página de hoy.Esto no va a ser exactamente el mismo que el suyo, pero se puede señalar a alguien en la dirección correcta si tienen un problema similar.Mi problema parecía provenir de dos fuentes diferentes.

En primer lugar, la message excepción de la propiedad no se establece en algunos de los servlets que estaba lanzando excepciones atrapado por la página de error.Los servlets se captura y la regeneración de las excepciones a la ServletException(Throwable rootCause) constructor.

En segundo lugar, en la página de error en sí, el autor original había utilizado el código scriptlet para analizar el mensaje utilizando String.split(message, ";"); Ya que el mensaje fue null este error.Me estaba poniendo un NullPointerException en mi registro de errores, junto con el mensaje de "se ha producido el Problema, mientras que la porción de la página de error."

Estas dos cosas combinadas para darme una página en blanco en la URL del servlet que fue lanzar la excepción original.He solucionado mi problema con mi propio mensaje de error cuando me rethrow excepciones en mi servlets utilizando el ServletException(String message, Throwable rootCause) constructor, por lo que el mensaje de error ya no se null.Yo también reescribió la error.jsp página usando EL lugar de scriptlet de código, pero que no era estrictamente necesario.

Para una página en blanco en JSF 2, coloque un punto de interrupción en ExceptionHandlerWrapper.handle o de una clase, la anulación de este método.En mi caso fue por un código personalizado que era demasiado restrictivo y el error fue que no se registra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top