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 :

gestion des exceptions


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 90
    Par défaut gestion des exceptions
    Bonjour,

    Voilà mon problème.
    Nous avons une Formulaire pageA.jsp.
    L'utilisateur le valide.
    S'en suit une action.
    Cette Action génère une Exception.

    J'aimerais lorsque c'est la cas, recharger pageA.jsp et afficher le libellé de l'exeption dans une fenêtre d'alert.


    On a donc commencer par redefinir le jsfServlet

    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
    public class MyJsfServlet extends HttpServlet {
     
        private FacesServlet delegate;
     
        private static String CLE_PAGE_COURANTE =  "class org.apache.myfaces.renderkit.html.util.JavascriptUtils.OLD_VIEW_ID";
     
        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) {
                    String pageCourante = request.getAttribute(CLE_PAGE_COURANTE).toString();
     
                    Throwable ee = ((ServletException) e).getRootCause();
                    StackTraceElement[] stackTraceElements =  ee.getStackTrace();
                    request.setAttribute("exceptionGeneree", stackTraceElements);
    request.getRequestDispatcher("/faces"+pageCourante).forward(request, response);  
            }
        }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!-- SERVLET JSF -->
    	<servlet>
    		<servlet-name>Faces Servlet</servlet-name>
    		<servlet-class>fr.JsfServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    on a essayer cela mais vu que l'on ne change pas le request et que delegate.service() sera rappeler, l'erreur sera ainsi regénérée et on boucle infiniment.

    Ainsi quelqu'un aurait il une solution pour pouvoir recharger la jsp incorrecte avec un request ayant de nouveaux paramètres.


    merci

  2. #2
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Bonjour,
    JSF propose déjà un mécanisme de gestion des erreurs pourquoi "bidouiller" ca vous même ?
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 90
    Par défaut
    Citation Envoyé par Ioan
    Bonjour,
    JSF propose déjà un mécanisme de gestion des erreurs pourquoi "bidouiller" ca vous même ?
    @+
    Quand tu dis qu'il y a déja un mécanisme, tu penses au <h:message> ?
    on a regarder, et ca m'a tout l'air d'être l'équivalent des validator .dot ?

    A ce que j'ai lu, un h:message se rapporte à un champ, il me semblait que c'était plus pour la validation de formulaire.

    Dans notre cas on récupère une exception retourné par un webservice, on ne peux pas la ratacher à un champs. Nous voudrions juste afficher le libellé de cette exception dans une alert.

    Jsf permet il de faire ca nativement ? Si oui pourrais tu me fournir quelques uri.


    merci

  4. #4
    Membre Expert
    Avatar de Ioan
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 737
    Par défaut
    Salut,
    A ce que j'ai lu, un h:message se rapporte à un champ,
    Pas vraiment, en tous cas pas toujours
    Tu peux faire quelque chose comme ca :
    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
     
    public String tonAction(){
        try{
            // ton action susceptible de lever une exception
            ...
            // redirection vers la page "Bravo, ouf, on n'a pas eu d'erreur"
            return "success";
        }catch(UneException e){
            FacesMessage message = new FacesMessage();
            message.setSummary("Oups");
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            message.setDetail("Détails : "+e.getMessage());
            FacesContext.getCurrentInstance().addMessage("oups", message);
        }
        return null;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:messages showSummary="true" showDetail="true">
        <h:message for="oups"/>
    </h:messages>
    <h:form>
        <h:commandButton value="Submit" action="#{TonBean.tonAction}"/>
    </h:form>
    Bonne chance
    @+
    Les FAQs Java, J2EE, JDBC, Struts > Les cours > Le Forum Java.
    Merci de respecter les règles du club.
    Mon blog : quelques news sur Java, Linux et le monde de l'Open Source.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 90
    Par défaut
    Merci,
    on va essayer de faire avec ca.
    Ce qui nous embête un peu c'est de devoir traiter les exceptions dans chaque action, on aurait préférer un mécanisme globale mais bon au moins ca a l'avantage de marcher ;-)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 90
    Par défaut
    Petite précision :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:messages showSummary="true" showDetail="true">
        <h:message for="oups"/>
    </h:messages>
    génère une liste de messages (avec ces balises <li>)

    On cherche a afficher le message d'erreur dans une alert, donc
    on aimerait juste afficher un message (donc sans les balises).

    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:message showSummary="true" showDetail="true" for="oups"/>
    ne retourne rien.

    une solution ?

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 19h01
  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