16

私はアプリケーション JSF に取り組んでおり、facebook 通知ゾーンの動作のように ajax を使用して定期的にコンポーネントを更新したいと考えています。どうやってやるの?

4

2 に答える 2

33

投票はあなたが使用する必要があるものです

ポーリングコンポーネントは、指定された間隔でajax呼び出しを行います。

たとえば、Primefaces世論調査

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

PrimefacesAjaxPollを紹介するためのリンク

純粋なJSFアプローチは、定期的に呼び出すjsタイマーを使用することです。document.getElementById('someFormId:idOfButton').click();

またはjquery$("#someFormId\\:idOfButton").click();

ボタンは次のようになりますが

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

このようなもの

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

タイマーJavaScriptタイミングイベントの詳細

于 2012-06-27T14:16:33.217 に答える
5

RichFacesには、ポーリングコンポーネントもあります。これが彼らが提供する良い例です

<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>
于 2012-07-20T21:59:38.697 に答える