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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    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 éclairé 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
    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 confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    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 éclairé 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
    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 confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    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 confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    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 éclairé 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
    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}">

+ 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, 08h23
  2. Réponses: 12
    Dernier message: 27/09/2007, 08h33
  3. Affichage des message d'erreurs avec Struts
    Par stujava dans le forum Struts 1
    Réponses: 4
    Dernier message: 13/08/2007, 21h12
  4. affichage des message d erreures
    Par Philcmoi dans le forum JSF
    Réponses: 6
    Dernier message: 05/08/2007, 19h18
  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, 10h15

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