Se connecter avec
S'enregistrer | Connectez-vous

[JSF] Mise à jour inputTextArea

Dernière réponse : dans Programmation

J'utilise dans une JSF un bouton qui exécute un bout de code ayant un temps d'exécution conséquent.

J'ai rajouté dans ma page une sorte de inputTextArea dans lequel l'utilisateur pourrait suivre en temps réel le déroulement de l'exécution par des ajouts successifs de simples phrases. Par exemple :

"
Récupération des personnes à synchroniser...
Synchronisation de l'invividu abertaud en cours...
Synchronisation terminée pour abertaud...
Synchronisation de l'individu xxxxxxx en cours....
etc.
"

Ca rassurerait l'utilisateur sur le bon comportement de l'application, mais surtout, ca éviterait les TIME_OUT du navigateur.

Le problème est que l'affichage ne s'effectue que lorsque la fonction est terminée. C'est-à-dire que tout s'affiche d'un coup, à la fin. Alors que j'aurai besoin de "raffraichir" mon inputTextArea à chaque rajout de texte...

Autres pages sur : jsf mise jour inputtextarea

Lassé par la pub ? Créez un compte

En fait il existe une méthode (qu'on appellera reaction())qui est exécutée lorsqu'un clic est observé sur un bouton.

Cette méthode, d'un temps d'exécution conséquant, rajoute régulièrement du texte dans une variable de type String, et cette variable est liée à un inputTextArea.

Le truc qui se passe, c'est que l'affichage de cet inputTextArea est raffraichi à la fin de l'exécution de la méthode reaction().

Ce que j'aurai besoin, c'est de pouvoir raffraichir l'affichage à chaque fois que je modifie le String associé à l'inputTextArea

Voila le code intéressant appartenant à la page JSF :

"
<h:commandButton action="#{Synchronisation.doSynchroniser}" value="Lancer la synchronisation" styleClass="button"/>

<h:inputTextarea value="#{Synchronisation.suivi}" readonly="true" immediate="true" rows="12" cols="100">
</h:inputTextarea>
"

C'est la fonction doSynchroniser qui est appelée en réaction au bouton, et c'est cette même fonction qui s'occupe d'ajouter des 'String' dans l'inputTextArea via la variable Synchronisation.suivi

L'affichage se fait normalement, à la fin de l'exécution de Synchronisation.doSynchroniser, mais je cherche à savoir s'il est possible de raffraichir cet affichage plus régulièrement.
Lassé par la pub ? Créez un compte