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 :

[JSF] Gestion des exceptions


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut [JSF] Gestion des exceptions
    Bonjour à tous !

    Je souhaiterais savoir quel est le meilleur moyen d'afficher les exceptions recontrées coté serveur dans une application JSF ?

    Si une solution peut permettre d'afficher le message de l'exception via <h:messages> ou mieux je suis preneur !

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Citation Envoyé par Pakiam
    Bonjour à tous !

    Je souhaiterais savoir quel est le meilleur moyen d'afficher les exceptions recontrées coté serveur dans une application JSF ?

    Si une solution peut permettre d'afficher le message de l'exception via <h:messages> ou mieux je suis preneur !
    Pour l affichage de message fait des recherches sur <h:message> dans le tutorial http://schmitt.developpez.com/tutori.../jsf/advanced/

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut
    En fait le problème du h:messages est qu'il n'est accessible qu'avant le traitement de la requête (phase Invoke Application). Durant cette phase on ne peut plus ajouter de message dans la queue d'erreurs.

    Ma question était plus général, à savoir, comment gérer et afficher proprement les exceptions serveur (problème de connexion à la base de données, ressource manquante...) ?

  4. #4
    Membre éprouvé Avatar de et.rond.et.rond
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 110
    Par défaut
    Citation Envoyé par Pakiam
    comment gérer et afficher proprement les exceptions serveur (problème de connexion à la base de données, ressource manquante...) ?
    ce genre d'erreur se gère avec un "log" où tu stockes les messages d'erreurs. ensuite tu peux rajouter des fonctionnalités comme être averti par e-mail de ce genre d'erreur pour être averti d'une erreur sur un site d'un client avant que le client lui même le remarque

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Par défaut
    Pas problème pour le suivi des erreurs (via fichiers de logs ou autres).
    En l'occurrence il s'agit d'afficher à l'utilisateur qu'une erreur technique est survenue !

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    tu peux rediriger les exceptions générés par du code foireux :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    package com.prylos.yapps.helper;
     
    	import java.io.IOException;
     
    	import javax.faces.webapp.FacesServlet;
    	import javax.servlet.ServletConfig;
    	import javax.servlet.ServletException;
    	import javax.servlet.ServletRequest;
    	import javax.servlet.ServletResponse;
    	import javax.servlet.http.HttpServlet;
    	import javax.servlet.http.HttpServletRequest;
    	import javax.servlet.http.HttpServletResponse;
     
     
    	public class CustomFacesServlet extends HttpServlet {
     
    	private static final String INIT_PARAM_ERROR_PAGE = "errorPage";
     
    	private FacesServlet delegate;
     
    	private String errorPage;
     
    	public void init(ServletConfig servletConfig) throws ServletException {
    	     delegate = new FacesServlet();
    	     delegate.init(servletConfig);
    	     errorPage = servletConfig.getInitParameter(INIT_PARAM_ERROR_PAGE);
    	}
     
    	public void destroy() {
    	     delegate.destroy();
    	}
     
    	public ServletConfig getServletConfig() {
    		    return delegate.getServletConfig();
    	}
     
    	public String getServletInfo() {
    	     return delegate.getServletInfo();
    	}
     
    	public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
    	     try {
    	          delegate.service(request,response);
    	     } 
    	     catch(Throwable e) {
    	          redirectToErrorPage((HttpServletRequest) request, (HttpServletResponse) response);
    	     }
    	}
     
    	private void redirectToErrorPage(HttpServletRequest request, HttpServletResponse response) throws IOException {
    	     if (!"".equals(errorPage))  {
    	          response.sendRedirect(request.getContextPath() + errorPage);
    	     }
    	}
     
     
    }
    Et dans ton web.xml tu appelle ta servlet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    servlet>
         <servlet-name>Faces Servlet</servlet-name>
         <servlet-class>package. com.prylos.yapps.helper.CustomFacesServlet</servlet-class>
         <init-param>
              <param-name>errorPage</param-name>
              <param-value>/faces/errorPage.jsp</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>

  7. #7
    Membre éclairé
    Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 89
    Par défaut
    En fait le problème du h:messages est qu'il n'est accessible qu'avant le traitement de la requête (phase Invoke Application). Durant cette phase on ne peut plus ajouter de message dans la queue d'erreurs.
    Non, tu peut utiliser les h:messages jusqu'au render response. Dans ton backing bean tu peut avoir un try / catch avec dans le catch un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     catch (Exception x) { 
                 FacesMessage message = new FacesMessage( 
                         FacesMessage.SEVERITY_FATAL, 
                         x.getClass().getName(), x.getMessage()); 
                 FacesContext.getCurrentInstance().addMessage( 
                         null, message);
     }
    Si c'est pour recuperer des exeption non catchées, une simple page d'erreur dans le fichier web.xml suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
             <error-page> 
                     <error-code>500</error-code> 
                     <location>/error.jsp</location> 
             </error-page>

Discussions similaires

  1. Gestion des exceptions avec JSF RI 1.2
    Par darsky dans le forum JSF
    Réponses: 5
    Dernier message: 12/11/2008, 12h25
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 15h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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