Activation et désactivation h:commandButton
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:
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:
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:
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.