2012-06-27 4 views
15

Ich arbeite an einer Anwendung JSF und ich möchte in regelmäßigen Abständen eine Komponente mit AJAX wie Facebook Benachrichtigungszone Verhalten aktualisieren. Wie kann ich das tun?JSF, aktualisieren Sie regelmäßig eine Komponente mit AJAX?

+5

In Zukunft Fragen geben they, es wäre hilfreich, wenn Sie ausdrücklich erwähnen, welche Komponentenbibliotheken Sie die Nutzung, wie PrimeFaces. Wenn Sie nichts erwähnen, wird immer Standard-JSF angenommen. – BalusC

Antwort

30

Poll ist, was Sie

Umfrage Komponente make Ajax-Aufrufe in einem bestimmten Intervall verwenden müssen.

Zum Beispiel 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> 

Link-Primefaces Ajax Poll

Reines JSF Ansatz präsentieren würde js Timer zu verwenden, die $("#someFormId\\:idOfButton").click();

Zeitschrift document.getElementById('someFormId:idOfButton').click();

oder jquery aufruft während der Knopf l aussehen wird ike diese

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

so etwas wie dieses

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

Mehr über Timer JavaScript Timing Events

+2

Basierend auf OP's Frage Geschichte, verwendet er PrimeFaces, das ist eine perfekte Lösung. – BalusC

5

In Richfaces gibt es eine als auch Umfrage-Komponente. Hier ist ein schönes Beispiel

<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>