Leere Seite in JSF


2

Wenn mein Code eine Ausnahme auslöst, manchmal - nicht immer - die JSF präsentiert eine leere Seite. Ich benutze Facelets für das Layout. Ein ähnlicher Fehler wurde bei dieser Sun forumn´s post gemeldet, aber ohne Antworten. Jeder andere mit dem gleichen Problem oder eine Lösung? ;)

Aufgrund einiger Anfragen. Hier folgen weitere datails:

web.xml

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

und der Stapel in Bezug auf JSF nach der wirkliche Ausnahme gedruckt:

####<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> <[[email protected] - 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) 

Ich bin mit der JSF-Version Mojarra 1.2_09, richfaces 3.2.1.GA und facelets 1.1.13.

Hoffnung etwas Hilfe :(

  0

Würde es Ihnen etwas ausmachen, uns ein wenig mehr Details zu geben? Welche Implementierung verwenden Sie und wie ist Ihr Fehlerbehandlungssystem konfiguriert? 23 sep. 082008-09-23 20:59:59

  0

Ich habe dieses Problem erneut bearbeitet. Bitte schau es dir an. ;) 23 sep. 082008-09-23 21:20:56

2

Ich denke, das hängt weitgehend von Ihrer JSF-Implementierung. Ich habe gehört, dass einige leere Bildschirme übertragen werden.

Der, den wir Fehler 500 ist mit einem Stapel werfen wurden unter Verwendung würde Andere Zeitüberschreitungs-Schaltflächen funktionieren nicht ohne Fehler für den Benutzer Dies war alles während unserer Entwicklungsphase

Aber der beste Rat, den ich Ihnen geben kann, ist, die Ausnahmen zu fangen und sie in einem Fehlerprotokoll zu protokollieren Sie haben den Stack-Trace für das Debuggen später.Für Nachrichten, die wir nicht tun konnten, wie ein Backend fehlgeschlagen wir w Fügen Sie dem FacesContext nur eine schwerwiegende Nachricht hinzu, die auf dem Bildschirm angezeigt wird, und protokollieren Sie den Stack-Trace.

  0

Danke für die Antwort. Eigentlich ist es traurig. Nette Empfehlung, der wir schon folgen, aber das Problem geht immer noch. Der Punkt ist genau Fang, um dieses Verhalten zu vermeiden. :( Danke. 23 sep. 082008-09-23 21:19:47

  0

gut ich habe in meiner Anwendung gesehen, wo manchmal Seite leer geladen wurde. Die Ursache wurde gefunden, als zu viele Dateien in meiner Anwendung in BG-Aktivitäten geöffnet waren und die Dateiströme wurden an einigen Orten nicht geschlossen 04 apr. 102010-04-04 15:23:11


1

Ich habe heute ein ähnliches Problem in meiner error.jsp Seite behoben. Das wird nicht genau das gleiche wie Ihres sein, aber es könnte jemanden in die richtige Richtung weisen, wenn sie ein ähnliches Problem haben. Mein Problem schien aus zwei verschiedenen Quellen zu kommen.

Zuerst wurde die Exception-Eigenschaft message in einigen Servlets, die Ausnahmen durch die Fehlerseite abgefangen haben, nicht gesetzt. Die Servlets haben Ausnahmen mit dem ServletException(Throwable rootCause)-Konstruktor abgefangen und erneut ausgelöst.

Zweitens, in der Fehlerseite selbst, hatte der ursprüngliche Autor Scriptlet-Code verwendet, um die Nachricht zu analysieren mit String.split(message, ";"); Da die Nachricht war null dies fehlgeschlagen. Ich habe eine NullPointerException in meinem Fehlerprotokoll zusammen mit der Nachricht "Problem trat beim Ausliefern der Fehlerseite auf."

Diese beiden Dinge kombiniert, um mir eine leere Seite an der URL des Servlets, die die ursprüngliche Ausnahme warf werfen. Ich habe mein Problem behoben, indem ich eine eigene Fehlermeldung ausgegeben habe, wenn ich Ausnahmen in meinen Servlets mit dem ServletException(String message, Throwable rootCause)-Konstruktor erneut austrage, sodass die Fehlermeldung nicht mehr null lautet. Ich habe auch die error.jsp Seite mit EL anstelle von Scriptlet Code umgeschrieben, aber das war nicht unbedingt notwendig.

  0

Nice! Thanks man. 18 feb. 112011-02-18 13:58:56


-1

Platzieren Sie für eine leere Seite in JSF 2 einen Haltepunkt in ExceptionHandlerWrapper.handle oder eine Klasse, die diese Methode überschreibt. In meinem Fall war es aufgrund von benutzerdefinierten Code, der zu restriktiv war und der Fehler wurde nicht protokolliert.

  0

Seine 1.2.09, nicht JSF 2. 04 jan. 132013-01-04 15:34:52

  0

Ich schrieb dies für Leute, die hier nach einer Suche landen, in 2012 können sie JSF 2 verwenden. Deshalb habe ich angegeben, dass es für JSF 2 gilt. Aber trotzdem vielen Dank für den Downvote ... 07 jan. 132013-01-07 15:33:10