bonjour,
Je cherche comment faire pour personnaliser les pages d'erreurs. Parfois (malheureusement) il arrive à mon application de "planter". J'ai deux types de page d'erreur:
1. une page blanche avec comme titre "Exception Hander" et la trace dans des carrés rose
2. une page blanche avec deux lignes bleu qui délimite le text (en génral le titre est HTTP un numero)
Je souhaiterai que toutes erreurs soient redirigées vers une page. Le texte restera identique mais la page aura l'allure des autres pages de mon application. Après quelque recherche j'ai créé une page ErrorDisplay (code ci dessous) et un bean request (code ci-dessous).
Ce que je n'arrive pas à trouver c'est se que je dois mettre dans mon web.xml pour qu'il utilise cette page.
Code de la page jsp:
Code du bean:
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 <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <f:subview id="errorPage"> <head> ..... <title>ERRO PAGE</title> </head> <body> <div id="cadreGeneral"> <h:form id="formErrorPage"> <div class="page"> <div class="formCadre"> <h:outputText value="#{ErrorDisplay.stackTrace}"/> </div> </div> </h:form> </div> </body> </f:subview> </html>
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 public class ErrorDisplay { public String getStackTrace() { final FacesContext context = FacesContext.getCurrentInstance(); final Map<String, Object> request = context.getExternalContext().getRequestMap(); final Throwable ex = (Throwable) request.get("javax.servelt.error.exception"); final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw); fillStackTrace(ex, pw); return sw.toString(); } private static void fillStackTrace(Throwable t, PrintWriter w) { if (t == null) { return; } t.printStackTrace(w); if (t instanceof ServletException) { final Throwable cause = ((ServletException) t).getRootCause(); if (cause != null) { w.println("Root cause: "); fillStackTrace(cause, w); } } else if (t instanceof SQLException) { final Throwable cause = ((SQLException) t).getNextException(); if (cause != null) { w.println("Next Exception: "); fillStackTrace(cause, w); } } else { final Throwable cause = t.getCause(); if (cause != null) { w.println("Cause: "); fillStackTrace(cause, w); } } } }
Partager