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 2 / PrimeFaces] Problème synchronisation validation et affichage de boites de dialogue


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut [JSF 2 / PrimeFaces] Problème synchronisation validation et affichage de boites de dialogue
    bonjour,
    j'ai un formulaire avec jsf2 et primefaces qui contient un bouton submit qui traite deux choses :
    d'abord : la validation du formulaire avec l'attribut update puis le lancement d'une boite de dialogue de confirmation lorsque la validation réussi et tous ca est géré par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update="myfieldset display"
    alors mon probleme c'est que lorsque je clique sur le boutton de validation : si la validation ne reussi pas c'est ok : les messages de validations s'affichent dans le formulaire
    mais si la validation réussi alors je dois cliquer une deuxième fois pour avoir l'affichage de la boite de dialogue

    quelqu'un saurait il comment resoudre ce problème ?

    voila le code de la page :
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:p="http://primefaces.org/ui"
          xmlns:f="http://java.sun.com/jsf/core">
     
     
     
        <script type="text/javascript">
            <!--
            function effacer(formulaire){
                for (var i=0; i<formulaire.length; i++){
                    if (formulaire.elements[i].type=="input" || formulaire.elements[i].type=="textarea" ) {formulaire.elements[i].value="";}
                }
                document.getElementById('contenu_input').value="";
            }
            //-->
        </script>
     
        <body>
     
            <ui:composition template="./template_utilisateur.xhtml">
     
                <ui:define name="content">
                    <h:form id="form" prependId="false" >  
                        <p:fieldset  id="myfieldset" legend="Nouveau message">
     
                            <p:messages id="msgs"/>
     
                            <h:panelGrid columns="3" style="margin-bottom:10px">
                                <h:outputLabel for="title" value="Titre : *"/> 
                                <p:inputText id="title" style="width:340px;" value="#{messageController.titre}" required="true" requiredMessage="veuillez saisir un titre" label="Titre">  
                                    <f:validateLength minimum="10" />  
                                </p:inputText>  
                                <p:message for="title" display="icon"/>
                                <h:outputLabel for="city" value="Destinataire : *" /> 
                                <p:selectOneMenu id="city" value="#{messageController.destinataire}" label="Destinataire" required="true" requiredMessage="veuillez choisir au moins un destinataire" >  
                                    <f:selectItem itemLabel="Séléctionner déstinataire" itemValue="" />  
                                    <f:selectItems value="#{messageController.users}" />    
                                </p:selectOneMenu>  
                                <p:message for="city" id="msgSurname3" display="icon"/>
     
                                <h:outputLabel for="comm" value="Lié a La commande N° : " /> 
                                <p:selectOneMenu id="comm" label="Commande"  value="#{messageController.idComm}"  >  
                                    <f:selectItem itemLabel="Aucune commande" itemValue="" />  
                                    <f:selectItems value="#{messageController.id_c}" />    
                                </p:selectOneMenu>  
                                <p:message for="comm" id="msgSurnamse3" display="icon"/>
     
                            </h:panelGrid>
                            <h:outputLabel for="contenu" value="Contenu : *" /> 
                            <h:panelGrid columns="2">
                                <p:editor id="contenu" widgetVar="editer" value="#{messageController.message}" width="600" required="true" requiredMessage="Veuillez saisir le contenu du message" >
                                    <f:validateLength minimum="10" /> 
                                </p:editor>  
                                <p:message for="contenu" id="editorm" display="icon"/>
                            </h:panelGrid>
     
                            <h:panelGrid columns="3">  
                                <p:commandButton id="submitButton" value="envoyer" update="myfieldset display"  onclick="#{messageController.retournerDialog()}" icon="ui-icon-disk" />  
                                <p:commandButton id="clearButton" type="reset" value="initialiser" onclick="editer.clear()"  
                                                 icon="ui-icon-close" /> 
                            </h:panelGrid>  
     
                        </p:fieldset>  
     
                        <p:dialog header="Confirmation" widgetVar="dlg" showEffect="fade" hideEffect="fade" modal="true">  
                            <h:panelGrid id="display" columns="1" cellpadding="4">
                                <h:outputText value="Titre : " />  
                                <h:outputText value="#{messageController.titre}" id="model"/>  
     
                                <h:outputText value="Déstinataire :" />  
                                <h:outputText value="#{messageController.destinataire}" id="year"/>  
     
                                <h:outputText value="Lié à la commande N° : " />  
                                <h:outputText value="#{messageController.idComm}" id="manufacturer"/>  
     
                                <h:outputText value="Contenu :" />  
                                <h:outputText id="displxcay" value="#{messageController.message}" escape="false" />
                            </h:panelGrid>
     
                        </p:dialog>  
     
                    </h:form>  
     
                </ui:define>
     
            </ui:composition>
     
        </body>
    </html>
    et voila la methode pour lancer la boite de dialogue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        public String retournerDialog(){
            String retour = "";
            if( getDestinataire() != "" && getMessage()!= "" && getTitre()!="" && getMessage().length()>9 && getTitre().length()>9){
                retour="dlg.show()";
            }
            return retour;
            }
    merci d'avance

  2. #2
    Membre éclairé Avatar de liquideshark
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2006
    Messages : 347
    Par défaut
    regarde cet exemple ca peut t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <p:commandButton ajax="false" style="font-size: 15px"
                                         onclick="confirmation.show()" type="button" value="Delete selected items"/>
     
    <p:confirmDialog message="Are you sure you want to delete this item ?"
                            showEffect="bounce" hideEffect="explode"
                            header="Header" severity="alert" widgetVar="confirmation">
                    <p:commandButton value="Yes Sure" update="messages" oncomplete="confirmation.hide()"
                                         actionListener="#{cameraTypesController.destroyCameraType}" />
                    <p:commandButton value="Not Yet" onclick="confirmation.hide()" type="button" />
                </p:confirmDialog>

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/10/2010, 17h58
  2. Réponses: 16
    Dernier message: 07/10/2010, 12h03
  3. TinyMCE temps d'affichage des boites de dialogue trop long
    Par manu f dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 30/07/2010, 12h08
  4. [TinyMCE] Affichage des boites de dialogues d'insertion
    Par bruce-willis dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 08/03/2010, 14h05
  5. [VB-E] Validation automatique d'une boite de dialogue
    Par Meryan dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2007, 10h51

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