我希望使用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
内的所有内容都将在初始页面请求中呈现。我怎么能抑制这种行为?
答案 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>