如何防止a4j:由a4j:poll轮询时闪烁状态

时间:2014-06-23 20:12:34

标签: jsf richfaces

我正在开发一个使用rich:tree元素的项目,在展开时,应该使用a4j:status显示附近的处理动画。我遇到的问题是树被多个其他元素重新渲染。我认为造成最大麻烦的是a4j:push元素每秒都会重新渲染树。这种重新渲染会导致状态元素在不应该的情况下改变状态,从而导致屏幕闪烁。

我的状态元素:

<a:outputPanel id="working_animation" style="display: block; height: 1px">
                    <!-- Working animation -->
                    <a:status  stopText=" " id="header_progress">
                        <a:facet name="start">
                            <a:outputPanel id="header_working" rendered="#{rich:element('tree_state.value').value}" style="padding-left: 16.5em;">
                                <span id="l-1"></span>
                                <span id="l-2"></span>
                                <span id="l-3"></span>
                                <span id="l-4"></span>
                                <span id="l-5"></span>
                                <span id="l-6"></span>
                            </a:outputPanel>
                        </a:facet>
                    </a:status>
</a:outputPanel>

树元素的一部分:

<rich:tree 
                            id="sectionTree"
                            switchType="ajax"
                            value="#{sectionAction.sectionNodes}"
                            var="node"
                            nodeFace="#{node.nodeType}"
                            rightClickSelection="true"
                            ajaxSubmitSelection="true"
                            iconCollapsed="/img/treenode/collapsed.png"
                            iconExpanded="/img/treenode/expanded.png"
                            componentState="#{sectionAction.treeState}">
                        <rich:changeExpandListener binding="#{sectionAction}" />
                        <rich:nodeSelectListener binding="#{sectionAction}" />

除此之外是节点定义

推送元素:

<h:form>
        <a:push
            eventProducer="#{loggedUser.registerLoginListener}"
            interval="1000"
            reRender="sectionTree">
        </a:push>
        <a:push
            eventProducer="#{loggedUser.registerStudentListener}"
            interval="2000"
            reRender="sectionTree">
        </a:push>
    </h:form>

1 个答案:

答案 0 :(得分:2)

如何禁用状态有两种选择:

  1. a:push包裹a:region个标签。
  2. status="none"指定a:push属性。
  3. 有关详细信息,请参阅livedemo:http://livedemo.exadel.com/richfaces-demo/richfaces/status.jsf?c=status&tab=usage