a4j:在JSF渲染后轮询开始轮询

时间:2014-05-22 09:03:13

标签: richfaces ajax4jsf

我希望使用a4j:poll在完成JSF渲染后在我的视图中加载内容,以提高视图本身的渲染速度。我认为传递页面然后开始轮询内容是非常常见的。但是,如果我有这样的结构:

     <h:form>
      <a:region>
        <a:poll id="feed" reRender="feedReader" interval="100"/>
        <a:outputPanel id="feedReader">
          <h2>
            <a  href="#{feedReader.link}">
              <h:outputText value="#{feedReader.title}" />
            </a>
          </h2>
          <h:outputText value="#{feedReader.teaser}" />
        </a:outputPanel>
      </a:region>
    </h:form>

a:outputPanel内的所有内容都将在初始页面请求中呈现。我怎么能抑制这种行为?

1 个答案:

答案 0 :(得分:0)

我认为没有任何开箱即可允许这样做,你可以设置一个bean属性,当页面完全加载时,通过javascript(或本例中为jQuery)命令激活轮询,见下面的例子,

或者您可以在轮询操作中创建一个计数器,以便前几个轮询&#39;被忽略

除非您将一些非常重要的资源加载到页面中,否则它不应该有太大的区别

<h:form>
  <a:region>
    <a4j:jsFunction name="enablePollJs" action="#{yourBean.enablePoll} reRender="feed" />
    <a:poll id="feed" reRender="feedReader" interval="100" enabled="#{yourBean.pollEnabled}" />
    <a:outputPanel id="feedReader">
      <h2>
        <a  href="#{feedReader.link}">
          <h:outputText value="#{feedReader.title}" />
        </a>
      </h2>
      <h:outputText value="#{feedReader.teaser}" />
    </a:outputPanel>
  </a:region>
</h:form>

//Then add this to your javascript / header
<script>
    jQuery(document).ready(function(){
        enablePollJs();
    });
</script>