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?

15
demandé sur Potinos 2012-06-27 18:11:46

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

31
répondu Daniel 2016-02-04 12:22:38

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>
5
répondu simgineer 2012-07-20 21:59:38