IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Personnaliser la page d'erreur


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut Personnaliser la page d'erreur
    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 : 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 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
    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);
                }
            }
        }
    }

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    tu peux définir le code erreur ou le type d'exception comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <error-page>
      <exception-type>xxxx</exception-type>
      <location>/yyyy.jsp</location>
     </error-page>

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Avec cette technique je dois indiquer le numero de toutes les exceptions. Je ne souhaite pas faire de cas particulier il n'est pas possible de lui indiquer une page pour quelque soit l'exception?

    Par exemple je viens juste d'avoir une page exception Handler (avec des rose) indiquant l'exception suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Description:  An unhandled exception occurred during the execution of the web application. Please review the following stack trace for more information regarding the error.
    Exception Details: javax.faces.application.ViewExpiredException
      viewId:/webui/acceptors/Acceptors.faces - View /webui/acceptors/Acceptors.faces could not be restored.
    Je souhaite que cette page prenne le style de mon modèle mais la je ne vois pas quoi mettre à la place de tes xxxx

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ViewExpiredException c'est un peu speciale ça dépend de l'implémentation JSF et des librairies de composants utilisées.

    si tu as des erreurs métiers ou autre, tu peux donner le type d'exception tous les sous-types seront pris en compte..

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Desolée mais je comprend pas....
    Tu es entrien de me dire qu'il n'y a pas une basile pour gérer la redirection de la page quelque soit l'erreur?

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par Edta Voir le message
    Desolée mais je comprend pas....
    Tu es entrien de me dire qu'il n'y a pas une basile pour gérer la redirection de la page quelque soit l'erreur?
    Si tu gere les exceptions dans ton application et tu lance une exception par exemple de type com.company.error.Exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <exception-type> com.company.error.Exception</exception-type>
    à chaque exception de type com.company.error.Exception intercepté par le serveur, il y'aura redirection pour vers la page définis.

Discussions similaires

  1. Personnaliser la page d'erreur sur OAS
    Par elhilm dans le forum PL/SQL
    Réponses: 3
    Dernier message: 19/08/2008, 11h41
  2. personnaliser les pages d'erreur 404 et autres
    Par aurelientp dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 18/02/2008, 13h15
  3. Personnalisation des pages d'erreurs
    Par maya dans le forum Apache
    Réponses: 2
    Dernier message: 17/12/2006, 22h54
  4. Personnalisation des pages d'erreur Apache
    Par bat dans le forum Apache
    Réponses: 6
    Dernier message: 07/11/2005, 16h46
  5. Personnaliser les pages d'erreurs
    Par Jeweller dans le forum XMLRAD
    Réponses: 3
    Dernier message: 03/06/2004, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo