salut. j'ai un bouton de soumission qui est par défaut désactive. je souhaiterai l’activer une fois les validations des différents champs (ajax) effectués. je souhaiterai savoir s'il y a une méthode permettant de parcourir l'arbre des composants pour savoir si tout est OK.

pour valider mes champs, je procède comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<div class="form-group">
                                                                    <h:outputLabel class="col-lg-3 control-label" for="#{val['inscription.login']}"><h:outputText value="#{val['inscription.login']}"/><span
                                                                            class="requis">*</span></h:outputLabel>
                                                                    <div class="col-lg-5">
                                                                        <h:inputText id="#{val['inscription.login']}" class="form-control col-md-7 col-xs-12" required="true" value="#{manageuser.loginuser}"  requiredMessage="#{val['requiredLogin']}" validator="#{manageuser.ValidateLoginInscription}" p:placeholder="#{val['placeholder.login']}" >
                                                                            <f:ajax event="blur" render="#{val['LoginMessage']}" />
                                                                        </h:inputText>   
                                                                    </div>
                                                                    <h:message id="#{val['LoginMessage']}" for="#{val['inscription.login']}" styleClass="erreur" /><br />
                                                                </div>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<h:commandButton id="saveUser"  class="btn btn-success" value="#{val['formInscription.valider']}" action="#{manageuser.saveUser}" disabled="#{initapp.submitformUserButton}"> 
                                                        <f:ajax execute="@form" render="#{val['formshowMessages']} listuser #{val['idsecretary']}" />
                                                    </h:commandButton>
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
 
/*Appel à la validation du login reçue et initialisation de la propriété login du bean */
    public void ValidateLoginInscription(FacesContext context,
        UIComponent component, Object value) {
        String login = (String) value;
 
        try {
            if (login.trim() != null) {
                if (login.length() < Utility.MIN_LENGTH_LOGIN) {
                    FacesMessage lenghtMin = Messages.getMessage(null,
                            "lengthMin.Login", null);
                    lenghtMin.setSeverity(FacesMessage.SEVERITY_ERROR);
                    throw new ValidatorException(lenghtMin);
                }
 
                if (login.length() > Utility.MAX_LENGTH_LOGIN) {
                    FacesMessage lengthMax = Messages.getMessage(null,
                            "lengthMax.Login", null);
                    lengthMax.setSeverity(FacesMessage.SEVERITY_ERROR);
                    throw new ValidatorException(lengthMax);
                }
 
                if (login.matches("/^[A-Z\\s]+$/i")) {
                    FacesMessage specialCharacterLogin = Messages.getMessage(null,
                            "specialCharacterLogin", null);
                    specialCharacterLogin.setSeverity(FacesMessage.SEVERITY_ERROR);
                    throw new ValidatorException(specialCharacterLogin);
                }
 
                if (this.msApplication.getIMetierLocal()
                                          .getUserByLogin(login.trim()).size() > Utility.TAILLE_LISTE) {
                    FacesMessage loginAlready = Messages.getMessage(null,
                            "alreadyLogin", null);
                    loginAlready.setSeverity(FacesMessage.SEVERITY_ERROR);
                    throw new ValidatorException(loginAlready);
                }
            } else {
                FacesMessage requiredLogin = Messages.getMessage(null,
                        "requiredLogin", null);
                requiredLogin.setSeverity(FacesMessage.SEVERITY_ERROR);
                throw new ValidatorException(requiredLogin);
            }
        } catch (MedicsoftDaoException e) {
            this.msApplication.getIMetierLocal().getInfo()
                              .setErreurs(loginuser, e.getMessage());
 
            /*
            * En cas d'erreur imprévue émanant de la BDD, on prépare un message
            * d'erreur contenant l'exception retournée, pour l'afficher à
            * l'utilisateur ensuite.
             */
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    e.getMessage(), null);
            FacesContext facesContext = FacesContext.getCurrentInstance();
            facesContext.addMessage(component.getClientId(facesContext), message);
        }
    }
j'ai plusieurs champs comme ceci.