Error, Exception und Ajax

DaRolla

Grünschnabel
Hi,

also ich hab mir eine Fehlerseite für 404 gebaut.

<error-page>
<error-code>404</error-code>
<location>/Error404.jsp</location>
</error-page>

Und ich hab mir ne Fehlerseite für meine RootException gebaut (erbt von ServletException)

<error-page>
<exception-type>de.darolla.exception.RootException</exception-type>
<location>/Error.jsp</location>
</error-page>

Das ganze klappt auch hervorragend.

Nun hab ich in meinem Projekt aber ein komplexes Ajax Szenario.

(Für alle die nicht wissen was es ist: per Ajax lade ich asynchron JSP / Html Fragmente in meine Hauptseite ein).

Okay, nehmen wir also ein Beispiel:

Index.jsp wird aufgerufen. User klickt auf Login. Per Ajax wird Login.jsp aufgerufen, und das Html wird in mein Div <div id='login'> geladen.

Jetzt provoziere ich mal einen Fehler (den ich im Login.jsp nicht per Try-Catch abfange) der eine RootException wirft. (erbt von ServletException).

In meinem Ajax hat resObject nun status = 500.

Leider wird hier aber nicht der automatische Redirect angeworfen.

Wenn ich per window.location.href = "Error.jsp" auf meine Fehlerseite springe, hab ich aber alle Informationen der Exception verloren, die ich ja auf meiner Fehlerseite ausgeben möchte.

Welche Möglichkeiten hab ich da?

Das einzige was mir einfällt ist einen Redirect auf Error.jsp im Catch im Jsp zu machen, der Haken ist dass ich dann meine Fehlerseite im kleinen Login-Div zu sehen bekomm und nicht als ganzen.

Hat jemand Erfahrung mit Ajax und Java / JSP und Fehlerarchitektur?

Gruß
DaRolla
 
Auch wenn ich das nur ansatzweise glaube verstanden zu haben, mal folgender Gedankengang:

Du erwartest von AJAX als Antwort einen bestimmten HTML-Code.
Bei der Exception bekommst du aber etwas anderes(ob dies der Fall ist, sollte sich anhand des Aufbaus der Fehlerseite prüfen lassen).

Das einzige was mir einfällt ist einen Redirect auf Error.jsp im Catch im Jsp zu machen, der Haken ist dass ich dann meine Fehlerseite im kleinen Login-Div zu sehen bekomm und nicht als ganzen.

Mal diesen Gedanken weitergesponnen....wenn das Problem nur darin bestände, dass die Fehlerseite in dem <div> erscheint, dann befreie sie daraus...im Grunde genommen brauchst du, wenn du den Fehler identifiziert hast die Antwort von AJAX nur per write() ausgeben...und die Fehlerseite erscheint nicht mehr im <div>, sondern im Elterndokument.
 

Neue Beiträge

Zurück