J'ai un <p:commandButton disabled="#{scannerStatus.disabled}" actionListener="#{scannerStatus.activate}" id="button-id"/>
Comment mettre à jour l'attribut primefaces?
En scannerStatus je:
private boolean disabled;
// en plus geters et setters
public void activate() {
this.setDisabled(true);
boolean status = doAnAction(); // This takes some seconds
if (!status) {
doSomething();
} else {
this.setDisabled(false);
}
}
Le problème est que l'attribut disabled
du commandButton ne change pas lorsque this.setDisabled(true)
ligne de activate
méthode est appelé.
J'ai besoin de quelques secondes l'attribut disabled
du commandButton pour être true
.
La propriété disabled
est définie sur false, puis l'attribut disabled
de commandButton est mis à jour. La mise à jour dans commandButton a donc lieu après la fin de la fonction.
Comment puis-je mettre à jour l'attribut du commandButton lorsque le this.setDisabled(true)
de la méthode est activé?
J'ai essayé d'utiliser
RequestContext.getCurrentInstance().update("button-id");
après la this.setDisabled
mais il ne fonctionne pas.
@sinclair: Notez que OP prévu la 'this.setDisabled (true)' être immédiatement visible sur le côté client avant même 'état booléennes = doAnAction() 'est exécuté. Votre lien ne répond donc qu'à la partie Y de son http://xyproblem.info, pas à la partie X. – BalusC
Comment appeler l'écouteur d'action si le bouton est initialement désactivé? – raven
Le bouton n'est pas désactivé initialement. Le bouton doit être désactivé pendant quelques secondes après l'appel de l'actionListener. – Cristian