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