如何防止a4j:poll轮询时a4j:status闪烁



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

我的状态元素:

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

tree元素的一部分:

<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}" />

之后是节点定义

push元素:

<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. a:region包裹a:push标签。
  2. a:push指定status="none"属性

详细信息请参考现场演示:http://livedemo.exadel.com/richfaces-demo/richfaces/status.jsf?c=status&tab=usage

相关内容

  • 没有找到相关文章

最新更新