Вы можете использовать a4j:status
.Обратитесь к Exadel livedemo для получения более подробной информации: http://livedemo.exadel.com/richfaces-demo/richfaces/status.jsf?c=status&tab=usage
Если вам нужно показать сообщения только при взаимодействиях с таблицами данных, вы можете ограничить область для a4j:status
с помощью a4j:region
:
<a4j:region>
<a4j:status startText="Loading. Please wait..." >
<rich:dataTable .../>
</a4j:region>
ОБНОВЛЕНИЕ: Для отложенной загрузки некоторого контента можно использовать следующий подход.Создайте грань (или компонент):
<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>