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 :

Affichage d'une message d'erreur sans faire une redirection


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut Affichage d'une message d'erreur sans faire une redirection
    Bonjour à tous,

    Je suis débutant en Java/JSF, j'essaye de développer une application avec Prime Faces. Pour le moment tout marche bien, mais je cherche améliorer ma méthode de login. J'ai une page avec deux champs (identifiant/mdp), un bouton (connexion) et aussi des messages qui s'affichent cas les champs soient "null":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <h:panelGrid columns="3" styleClass="center"> 
    	<h:outputLabel value="Identifiant  :" /> 
    	<p:inputText id="txtMec" value="#{collaborateurBean.mec}" required="true" />  
            <p:message for="txtMec" display="icon" /> 
     
    	<h:outputLabel value="Mot de passe :" />  
    	<p:password id="txtMdp" value="#{collaborateurBean.mdp}" required="true" /> 
    	<p:message for="txtMdp" display="icon" /> 
     
    	<h:outputLabel value="" /> 
    	<h:commandButton action="#{collaborateurBean.verifierMdp}" value="Connexion" styleClass="btnConnexion" />
            <h:outputLabel value="" /> 
    </h:panelGrid>
    Le collaborateurBean.verifierMdp est une fonction que vérifie le mdp saisie et fait le renvoi vers une autre page (connexionError.xhtml ou welcome.xhtml), selon des régles dans le fichier faces-config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public String verifierMdp() throws NoSuchAlgorithmException, SQLException{
    	ServletContext application = getServletContext();
    	CollaborateurDAO dao = (CollaborateurDAO) application.getAttribute("CollaborateurDAO");
    	Collaborateur collab= new Collaborateur(mec);
    	String ok = "mdpFalse";
    	if (dao.verifierMdp(collab, mdp)==true){
    		ServletContext session = getServletContext();
    		session.setAttribute("MEC", collab.getMec());
    		ok = "mdpTrue";
    	}
    	return ok;
    }
    Dans le cas d'un erreur de connexion, la page connexionError.xhtml reste 5s et fait le renvoi vers la page de login, pour que l'utilisateur puisse réessayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <h:head>
            <meta http-equiv="refresh" content="5;main.xhtml" />
    </h:head>
     
    <h:body styleClass="fond">
    	<f:view>
    		<h:form>
    			<h2>Identifiant et/ou Mot de passe erroné(s)</h2>
    		</h:form>
    	</f:view>
    </h:body>
    Je voudrais savoir s'il y a un moyen de faire apparaître une message d'erreur dans le cas d'un mauvais login, sans avoir besoin de faire la redirection vers une autre page. Il pourrait être la message qu'est déjà à côté du champs mdp et qu’apparaît lorsqu'il est null ou même une massage au haut de la page (type <p:messages>)...

    Est-ce que quelqu'un pourrait m'aider svp?

    Je vous remercie d'avance,
    Marc

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut
    Je viens de réussir, j'ai changé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    <p:growl id="growl" showDetail="true" sticky="true" />
    ...
    <h:commandButton action="#{collaborateurBean.verifierMdp}" value="Connexion" styleClass="btnConnexion" update="growl" />
    ...
    et dans mon Bean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (dao.verifierMdp(collab, mdp)==true){
    			ServletContext session = getServletContext();
    			session.setAttribute("MEC", collab.getMec());
    			ok = "mdpTrue";
    		}else{
    			FacesContext context = FacesContext.getCurrentInstance();  
    	        context.addMessage(null, new FacesMessage("Login error", "Identifiant et/ou Mot de passe erroné(s)")); 
    	        ok = "x";
    		}
    Je sais pas si c'est la meilleure solution, mais elle semble marcher...

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    C'est effectivement la solution que t'offre PrimeFaces.Toutefois il faut penser à externaliser tes messages d'erreur,il ne faudrait pas que tu relivres ton application juste parcequ'on a modifié un message d'erreur

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Par défaut
    Merci pour l'observation DevServlet.

    Par contre est-ce que tu pourrais me dire un peu plus?? Un tuto, peut-être?

    Comme j'ai dit avant, je suis débutant dans ce domaine...

    ---------------------

    En plus, je viens de m'apercevoir que dans ma solution, dans le cas d'un champs null, qui doit afficher une message à côté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:message for="txtMdp" display="icon" />
    ,

    Ma message d'erreur apparaît-elle aussi, mais avec une message système que dit qu'il faut saisir le champ...

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Google est ton ami . Fais quelques recherches sur "l'internationalisation avec JSF" et tu auras plusieurs exemples pratiques. S'il te reste des questions nous sommes à ta disposition.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/02/2015, 18h12
  2. Réponses: 9
    Dernier message: 28/01/2011, 18h04
  3. Réponses: 4
    Dernier message: 05/06/2006, 11h34
  4. Supprimer l'affichage d'un message d'erreur
    Par delphineleclerc1 dans le forum Access
    Réponses: 2
    Dernier message: 23/02/2006, 09h14
  5. [C#] Message d'erreur vide dans une replication et rda
    Par Roach- dans le forum Windows Forms
    Réponses: 25
    Dernier message: 05/04/2005, 15h19

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