Question JSF, rafraîchit 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 faire ça?


15
2018-06-27 14:11


origine


Réponses:


Le sondage est ce que vous devez utiliser

Le composant d'interrogation effectue 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 pour présenter Primefaces Ajax Poll 

L’approche pure de JSF consisterait à utiliser js timer qui invoquera périodiquement document.getElementById('someFormId:idOfButton').click(); 

ou jquery $("#someFormId\\:idOfButton").click();

tandis que le bouton ressemblera à ceci

<h:commandButton id="idOfButton">
    <f:ajax render="txt_count"></f:ajax>
</h:commandButton>

quelque chose comme ça

setInterval(function(){$("idOfButton").click()},3000);

En savoir plus sur la minuterie Evénements JavaScript


30
2018-06-27 14:16



Dans RichFaces, il existe également un composant d'interrogation. Voici un bel exemple ils fournir

<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
2017-07-20 21:59