JSF, rafraîchir périodiquement un composant avec ajax?
je travaille sur une application JSF et je veux rafraîchir périodiquement un composant avec ajax comme le comportement de la zone de notification facebook. Comment puis-je le faire?
2 réponses
Sondage est ce que vous avez besoin d'utiliser
composante de sondage faire des appels ajax dans un intervalle spécifié.
par exemple Primefaces Poll
<h:form id="form">
<h:outputText id="txt_count" value="#{counterBean.count}" />
<p:poll interval="3" listener="#{counterBean.increment}" update="txt_count" />
</h:form>
Lien vers le showcase Primefaces Ajax Poll
Pure JSF approche serait d'utiliser js timer qui appelle périodique document.getElementById('someFormId:idOfButton').click();
ou jquery $("#someFormId\:idOfButton").click();
alors que le bouton ressemblera à ceci
<h:commandButton id="idOfButton">
<f:ajax render="txt_count"></f:ajax>
</h:commandButton>
quelque chose comme ce
setInterval(function(){$("idOfButton").click()},3000);
en savoir plus sur timer JavaScript Des Événements De Synchronisation
dans RichFaces il y a aussi une composante de sondage. Voici un bel exemple ils donner
<a4j:region>
<h:form>
<a4j:poll id="poll" interval="1000" enabled="#{userBean.pollEnabled}" reRender="poll,grid"/>
</h:form>
</a4j:region>
<h:form>
<h:panelGrid columns="2" width="80%" id="grid">
<h:panelGrid columns="1">
<h:outputText value="Polling Inactive" rendered="#{not userBean.pollEnabled}" />
<h:outputText value="Polling Active" rendered="#{userBean.pollEnabled}" />
<a4j:commandButton style="width:120px" id="control" value="#{userBean.pollEnabled?'Stop':'Start'} Polling" reRender="poll, grid">
<a4j:actionparam name="polling" value="#{!userBean.pollEnabled}" assignTo="#{userBean.pollEnabled}"/>
</a4j:commandButton>
</h:panelGrid>
<h:outputText id="serverDate" style="font-size:16px" value="Server Date: #{userBean.date}"/>
</h:panelGrid>
</h:form>