有没有办法向 rich:dataTable 添加加载消息?

发布于 2024-12-07 14:51:46 字数 151 浏览 0 评论 0原文

有没有人找到一种在 rich:dataTable 加载时显示加载消息的方法?

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

我正在使用 Richfaces 3.3.3。

Has anyone found a way of display a loading message while rich:dataTable loads?

I've found that if the load operations backing DataModel takes along time it results in the request taking along time. Is the an effective way of display a message to the user during this load?

I'm using Richfaces 3.3.3.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耀眼的星火 2024-12-14 14:51:46

您可以使用a4j:status。有关更多详细信息,请参阅 Exadel livedemo: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>

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

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

You can use a4j:status. Refer to Exadel livedemo for more details: http://livedemo.exadel.com/richfaces-demo/richfaces/status.jsf?c=status&tab=usage

If you need to show messages on data table interactions only, you can limit area for a4j:status by a4j:region:

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

    <rich:dataTable .../>
</a4j:region>

UPDATE:
For lazy loading of some content, the following approach can be used.
Create a facelet (or component):

<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 is reference of bean (I use page scope) which stores map of what was rendered and what was not (release method marks item as rendered).

Then you can use that like the following:

<ui:decorate template="lazyLoad.xhtml">
     <ui:param name="id" value="someId"/>
     <ui:define name="lazy">
           <rich:dataTable ... />
     </ui:define>
</ui:decorate>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文