2012-06-27 65 views
15

Estoy trabajando en una aplicación JSF y quiero actualizar periódicamente un componente con ajax Me gusta el comportamiento de la zona de notificación de Facebook. ¿Cómo puedo hacer eso?JSF, actualiza periódicamente un componente con ajax?

+5

En las preguntas futuras sería útil si menciona explícitamente lo bibliotecas componente que todo el uso, como PrimeFaces. Si no menciona nada, siempre se asumirá JSF estándar. – BalusC

Respuesta

30

Poll es lo que hay que utilizar

Poll componente realizar llamadas Ajax en un intervalo especificado.

Por ejemplo Primefaces encuesta

<h:form id="form"> 
    <h:outputText id="txt_count" value="#{counterBean.count}" /> 
    <p:poll interval="3" listener="#{counterBean.increment}" update="txt_count" /> 
</h:form> 

Enlace para mostrar Primefaces Ajax Poll

enfoque JSF puro sería utilizar temporizador js que invocará periódica document.getElementById('someFormId:idOfButton').click();

o jQuery $("#someFormId\\:idOfButton").click();

mientras que el botón se verá l ike este

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

algo como esto

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

Más sobre temporizador JavaScript Timing Events

+2

Basado en el historial de preguntas de OP, usa PrimeFaces, por lo que es un traje perfecto. – BalusC

5

En RichFaces hay un componente sondeo también. Aquí es un buen ejemplo they proporcionar

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