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 des messages d'erreur de remplissage de champs


Sujet :

JSF Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut Affichage des messages d'erreur de remplissage de champs
    Bonjour,

    Je viens de parcourir les posts concernant les messages d'erreur lors de la validation d'un formulaire, mais je me permets de poster tout de même, car j'ai un souci et je pense qu'il ne manque pas grand chose pour le résoudre ..

    J'ai un formulaire d'ajout, et lorsque la personne clique sur Enregistrer, j'émets un confirm en javascript pour le prévenir :

    Si il annule, retour sur la page, s'il met Ok , 2 possibilités :

    Tous les champs sont remplis et l'enregistrement se fait.
    Sinon, j'affiche un modalPanel pour lui indiquer les champs vides.
    Et c'est à ce niveau là que ça coince.

    J'ai défini mes messages dans messages.properties, qui est défini dans faces config, ces messages s'affichent bien mais j'ai aussi les messages par défaut de jsf qui s'affichent ... :s

    Je mets une copie d'écran de ce que j'obtiens en fichier joint .

    Mon code :

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <webuijsf:form id="form1">
         <h:outputText id="text2" style="left: 72px; top: 60px; position: absolute" value="Enregistrer une nouvelle personne :"/>
                            <h:panelGrid columns="1" id="grille" style="height: 192px; left: 48px; top: 72px; position: absolute" width="264">
                                <h:panelGroup id="panel1">
                                    <h:outputText id="outNom" value="Nom :"/>
                                    <h:inputText label="#{msgs.pasdenomPersonne}" id="inNom"  required="true" title="Nom de la personne" value="#{PersonneBean.nompersonne}"/>
                                </h:panelGroup>
                                <h:panelGroup id="panel2">
                                    <h:outputText id="outPrenom" value="Prénom :"/>
                                    <h:inputText label="#{msgs.pasdeprenomPersonne}" id="InPrenom" required="true" title="Prénom de la personne" value="#{PersonneBean.prenompersonne}"/>
                                </h:panelGroup>
                                <h:panelGroup id="panel3">
                                    <h:outputText id="outMatricule" value="Matricule :"/>
                                    <h:inputText label="#{msgs.pasdematriculePersonne}"  id="InMatricule" required="true" title="Matricule de la personne" value="#{PersonneBean.matricule}"/>
                                </h:panelGroup>
                                <h:panelGroup id="panel4">
                                    <h:outputText id="outDate" value="Date mise à* jour :"/>
                                    <h:inputText maxlength="10" size="10" title="date de mise à jour" value="#{PersonneBean.datemiseajour}">
                                        <f:convertDateTime pattern="dd/MM/yyyy" type="date"/>
                                    </h:inputText>
                                </h:panelGroup>
                                <h:panelGroup id="panel5">
                                    <h:outputText id="outAcces" value="Accès au logiciel"/>
                                    <h:selectBooleanCheckbox  id="selectBox1" title="A accès à l'outil" value="#{PersonneBean.acceslogiciel}"/>
                                </h:panelGroup>
                            </h:panelGrid>
                            <h:panelGrid columns="2" id="grille2" style="height: 144px; left: 360px; top: 72px; position: absolute" width="182">
                                <h:outputText id="outEquipe" value="Appartient à* l'équipe : "/>
                                <h:selectOneListbox label="#{msgs.pasdequipePersonne}" id="listeEquipes" onchange="submit" required="true"  size="5" value="#{PersonneBean.nomEquipe}">
                                    <f:selectItems binding="#{EquipeBean.nomEquipe}" id="listbox1SelectItems" value="#{EquipeListbean.listItemsEquipes}"/>
                                </h:selectOneListbox>
     
                            </h:panelGrid>
                                    <h:panelGrid columns="2" id="grille3" style="height: 144px; left: 360px; top: 150px; position: absolute" width="150">
                                <h:outputText id="outResp" value="A comme responsable  : "/>
                                <h:selectOneListbox id="listePersonnes"  value="#{PersonneBean.nomResponsable}">
                                    <f:selectItems binding="#{ResponsableBean.nomPersonne}" id="listboxItemsResponsables" value="#{ResponsableListBean.listItemsResponsables}"/>
                                </h:selectOneListbox>
                            </h:panelGrid>
     
                            <h:commandButton  onclick="if (!confirm('Voulez-vous enregistrer cette personne ?')) { return false; }else{return true;}" style="top:450px ; left:25px ; position:absolute" id="buttonValiderInscription" value="Enregistrer" action="#{PersonneBean.enregistrerPersonne}">
                                <a4j:support oncomplete="Richfaces.showModalPanel('panelVerif');"/>
                            </h:commandButton>
     
                        </webuijsf:form>
                    </webuijsf:body>             
     
     
                     <rich:modalPanel id="panelVerif" width="350" height="150" showWhenRendered="#{facesContext.maximumSeverity!=null}">
                                    <f:facet name="header">
                                        <h:panelGroup>
                                            <h:outputText value="Vérification "></h:outputText>
                                        </h:panelGroup>
                                    </f:facet>
                                    <f:facet name="controls">
                                        <h:panelGroup>
                                            <h:graphicImage value="/Images/Modal/close.png" style="cursor:pointer" id="hidelink"/>
                                            <rich:componentControl for="panelVerif" attachTo="hidelink" operation="hide" event="onclick"/>
                                        </h:panelGroup>
                                    </f:facet>
                                    <h:outputText value="Attention il y a des erreurs dans les champs suivants : "></h:outputText>
                                   <br/><br/>
                                   <h:message errorClass="errorMessage" for="inNom"/>
                                   <br/>
                                   <h:message errorClass="errorMessage" for="InPrenom"/>
                                   <br/>
                                   <h:message errorClass="errorMessage" for="InMatricule"/>
                                   <br/>
                                   <h:message errorClass="errorMessage" for="listeEquipes"/>
     
                                  </rich:modalPanel>

    Le code de message.properties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pasdenomPersonne=Veuillez entrer le nom de la personne
    pasdeprenomPersonne=Veuillez entrer le prénom de la personne
    pasdematriculePersonne=Veuillez entrer le matricule de la personne
    pasdequipePersonne=Veuillez choisir l'équipe de la personne
    Si vous avez des idées ..

    J'ai essayé de créer un fichier pour les messages par défaut de jsf, mais le souci est de pouvoir afficher chaque message concernant chaque champ ...
    Images attachées Images attachées  

  2. #2
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208
    Par défaut
    j'vais t'etre bien dire une betise, mais j'prend quand meme le risque
    De mémoire, il me semble que les messages jsf s'affiche parceque tu as précisés l'attribut : required="true"

    Du coup, si tu gere la validation de ton formulaire à la mano (avant l'enregistrement), plus besoin de cet attribut, et donc, plus de message JSF

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    Eh bien, ce n'est pas bête ^^
    Je viens d'essayer, mais si je mets Ok sans rien avoir rempli, je n'ai rien qui s'affiche (alors qu'avant ma modalPanel s'affichait)
    Je pense que c'est dû au tag <a4j:support onComplete=...


  4. #4
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208
    Par défaut
    Je t'avouerai que je n'ai jamais utilisé ce composant, mais je viens de faire un petit tour rapide sur la javadoc du composant modalPanel et visiblement, il est possible d'utiliser l'attribut :

    "rendered"

    du coup, peut etre que si tu utilise un boolean dans ton bean, qui est initialisé à false et qui prend la valeur true dès qu'il y a un problème de validation, le composant s'affichera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ... rendered="#{tonBean.tonBoolean}" ...

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    Merci pour ton aide ,

    En effet ça parait assez logique !! J'ai donc essayé cela aussi, en mettant mon booléan à true dans la fonction enregistrer de mon bouton : je teste si l'une des valeurs est nulle et à ce moment je change la valeur du booléen ... mais même chose ça n'affiche pas mon panel.

    Le onComplete est je pense lié aux "required = true ".. arfrfegjvhqsd

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    Le problème , c'est que je souhaite tester si les champs sont vides ou pas avant l'appel de ma fonction Enregistrer, donc tester avant dans mon bean , pour changer la valeur du booléen ... revient à faire quelque chose que j'évitais avec le javascript ...

  7. #7
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208
    Par défaut
    en effet
    En fait j'ai lu ton problème sans prendre la peine de regarder le code de ta page jsf , oups

    Maintenant c'est fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    facesContext.maximumSeverity
    va etre actualisé lorsqu'une exception jsf va etre levé, du coup, si pas de required=true, pas d'exception jsf (sauf si tu la leve manuellement)

    Du coup, ca peut valoir le coup d'éssayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <rich:modalPanel id="panelVerif" width="350" height="150" showWhenRendered="#{tonBean.tonBoolean}">

  8. #8
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208
    Par défaut
    Le problème , c'est que je souhaite tester si les champs sont vides ou pas avant l'appel de ma fonction Enregistrer, donc tester avant dans mon bean , pour changer la valeur du booléen ... revient à faire quelque chose que j'évitais avec le javascript ...
    C'est vrai que l'Ajax a ces avantages... mais comme j'ai pas le droit d'en utiliser dans mes applis... j'suis pas trop calé dans ce domaine, alors je te propose des solutions à ma porté

    Sinon, y'a toujours la solution freestyle ! Tu récupère les sources de la classe JSF concerné, tu supprimes les messages JSF tout pas beau, tu recompiles, et tu te retrouveras avec ton modalPanel, sans les messages JSF !!

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    Yeap, mais là du coup c 'est le même souci non ?
    Je veux dire, mon booléen doit passer à true avant que je clique sur Enregistrer , non ? ..

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    Mmm ça marche !
    Enfin, le modal panel s'affiche .. mais pas les messages d'erreur héhé ^^

    D'ailleurs , je ne vois pas ce qui a fait que à présent il s'affiche. Le showWhenRendered modifie quoi ?

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    aahh ... Je modifie direct dans la lib de jsf les messages ?

    C vrai que c moche ^^ mais étant donné que je veux créer à chaque page mes propres messages ... je vais peut etre tester ça ..

    Merci beaucoup de ton aide

  12. #12
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208
    Par défaut
    je sais pas comment reagit ce composant, mais vu ta description, c tout a fait possible... surtout si tu veux pas d'aller retour avec ton serveur...

    Dans le cas contraire, rien ne t'empeche, dans la methode, que tu appel quand tu click sur enregistrer de faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Je valide mon formulaire
    Si Valide
      J'enregistre
      Je redirige l'utilisateur
    Sinon
       Mon boolean à true
       Je redirige l'utilisateur sur la page précédente
    Fin si
    Mais là, l'Ajax n'asa plus d'intéret

  13. #13
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    RTFM ?

    Merci pour le lien de la doc,
    je taffe sur d'autres soucis de mon projet jsf, si je trouve une solution satisfaisante pour cette histoire de panel et de messages d'erreur je la mettrais ici !

    Merci

  15. #15
    Membre actif Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Points : 208
    Points
    208

  16. #16
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 47
    Points
    47
    Par défaut
    Pour clore ce post, au final j'ai réussi à afficher mes propres messages, j'ai pour cela ajouter des booléens dans mon bean pour chaque champ à renseigner obligatoirement.

    Dans la fonction Enregistrer appelée par mon bouton, je teste la valeur des champs et je modifie en fonction la valeur des booléens correspondants.

    Ces booléens me servent à afficher ou non les messages d'erreur dans le modalPanel, j'ai en effet remplacer les <rich:message> par des <h:outputText> pour ne pas avoir les messages par défaut de jsf ...

    Voilà ...

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

Discussions similaires

  1. Affichage des messages d'erreur sur mon serveur
    Par philippe57460 dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2008, 09h23
  2. Réponses: 12
    Dernier message: 27/09/2007, 09h33
  3. Affichage des message d'erreurs avec Struts
    Par stujava dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/08/2007, 22h12
  4. affichage des message d erreures
    Par Philcmoi dans le forum JSF
    Réponses: 6
    Dernier message: 05/08/2007, 20h18
  5. [PostgreSQL] eviter l'affichage des messages d'erreur
    Par Gandalf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/03/2007, 11h15

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