Soucis rafraichissement avec un <p:pol>
Bonjour,
Dans ma page d'acceuil j'ai un compteur qui me donne le nombre d'utilisateurs connectés à l'application.
J'utilise la balise <p:pol> pour scruter périodiquement si un nouvel utilisateur est connecté et mettre a jour le nombre.
Ce nombre affiché, est cliquable. Un clique permet d'ouvrir une pop up listant les utilisateurs connectés.
Mon problème est le suivant :
J'ai 2 utilisateurs connecté :
Ma page d'acceuil me dit "Nombre d'utilisateurs connectés : 2".Je clique sur le 2, une pop up s'ouvre et me liste les deux utilisateurs.
Un 3e utilisateurs se connecte.
Ma page d'acceuil se met a jour est marque "Nombre d'utilisateurs connectés : 3". Je clique sur le 3, une pop up s'ouvre et me liste les DEUX premiers utilisateurs.
En gros la liste ne s'est pas mise à jour....et je ne trouve pas la solution.
Si quelqu'un pouvait m'aider !!
Voici le code associé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <!-- Page d'acceuil -->
<h:outputLabel id="utilisateursConnectesClientLeger" value="Nombre d'utilisateurs connectés : "/>
<p:commandLink
style="display:inline-block"
actionListener="#{loginManager.refreshLogins}"
update="@form"
oncomplete="utilisateursConnectesClientLegerWidget.show();"
>
<h:outputText id="nombreUtilisateursClientLeger" value="#{loginManager.count}" />
<p:poll interval="10" process="@form" oncomplete="#{loginManager.count}" update="@form" async="true" immediate="true" />
</p:commandLink> |
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
| <!-- Dialogue permettant d'afficher la liste des utilisateurs connectés (client léger) -->
<p:dialog id="utilisateursConnectesClientLegerDialog" header="Liste des utilisateurs connectés au client Léger"
widgetVar="utilisateursConnectesClientLegerWidget" resizable="false"
closable="false" modal="true" appendToBody="true" >
<p:dataTable
id="utilisateurClientLegerDataTable"
var="utilisateur"
value="#{loginManager.logins}"
scrollable="true"
scrollHeight="300"
emptyMessage="Pas d'utilisateur connecté"
widgetVar="utilisateurDataTableWidget" >
<p:column headerText="Role" width="100" >
<h:outputText id="role" value="#{utilisateur.role}" />
</p:column>
<p:column headerText="Login" width="100">
<h:outputText id="site" value="#{utilisateur.login}" />
</p:column>
<f:facet name="footer">
<div style="text-align: center;">
<p:commandButton id="annulerButton" value="Annuler" onclick="utilisateursConnectesClientLegerWidget.hide()"/>
</div>
</f:facet>
</p:dataTable>
</p:dialog> |
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
| @ManagedBean(eager=true)
@ApplicationScoped
public class LoginManager {
private List<Utilisateur> logins= new ArrayList<Utilisateur>();
public List<Utilisateur> getLogins() {
return logins;
}
public void setLogins(List<Utilisateur> logins) {
this.logins = logins;
}
public int getCount() {
return logins.size();
}
public List<Utilisateur> refreshLogins(){
return getLogins();
}
public void addLogins(){
Administrateur a = new Administrateur();
a.setLogin("test");
logins.add(a);
}
} |