是否有一个加载消息添加到rich:dataTable



有没有人找到一种方法来显示加载消息,而富:dataTable加载?

我发现,如果支持DataModel的加载操作需要很长时间,则会导致请求花费很长时间。在此加载期间向用户显示消息的有效方法是什么?

我使用的是Richfaces 3.3.3.

您可以使用a4j:status。详细信息请参考Exadel现场演示:http://livedemo.exadel.com/richfaces-demo/richfaces/status.jsf?c=status&tab=usage

如果您只需要显示数据表交互的消息,您可以通过a4j:region限制a4j:status的区域:

<a4j:region>
    <a4j:status startText="Loading. Please wait..." >
    <rich:dataTable .../>
</a4j:region>

更新:对于某些内容的延迟加载,可以使用以下方法。创建一个facet(或组件):

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:c="http://java.sun.com/jstl/core"
            xmlns:a4j="http://richfaces.org/a4j"
            xmlns:rich="http://richfaces.org/rich">
<h:panelGroup id="lazyP#{id}" layout="block">
    <ui:fragment rendered="#{lazy.isRendered(id)}">
        <ui:insert name="lazy"/>
    </ui:fragment>
    <ui:fragment rendered="#{not lazy.isRendered(id)}">
        <h:outputText value="Loading..."/>
        <a4j:region>
            <a4j:jsFunction name="loadData#{id}" reRender="lazyP#{id}"
                            action="#{lazy.release(id)}"
                            limitToList="true"
                            ajaxSingle="true" eventsQueue="lazyQueue"/>
        </a4j:region>
        <script type="text/javascript">
            jQuery(document).ready(function() {
                loadData#{id}();
            });
        </script>
    </ui:fragment>
</h:panelGroup>

lazy是bean的引用(我使用页面作用域),它存储了渲染和未渲染的映射(release方法将项目标记为渲染)。

然后你可以像这样使用:

<ui:decorate template="lazyLoad.xhtml">
     <ui:param name="id" value="someId"/>
     <ui:define name="lazy">
           <rich:dataTable ... />
     </ui:define>
</ui:decorate>

相关内容

  • 没有找到相关文章

最新更新