Yo tenía el mismo problema que esta era mi solución (no super simple pero muy flexible):
Si desea añadir una carga Indikator por alguna parte de la página es necesario agregar dos <h:panelGroup>
elementos, uno para el indicador de carga y uno para el contenido cargado.
ej .:
<h:panelGroup styleClass="contentPreview content">
<h:outputText id="previewText" styleClass="updatePreview" value="#{lazyResultBean.previewContent}" />
</h:panelGroup>
<h:panelGroup styleClass="contentPreview loading">
<p:graphicImage style="width: 15px; height: 15px;" name="/images/ajax-loader.gif" />
</h:panelGroup>
importante es establecer la correcta styleClass de loading
para el Indicador de Carga y content
para el contenido. Ambos paneles también necesitan tener una clase que comparten, en este caso, la clase contentPreview
.
Para alternar entre el indicador de carga y el contenido, solo tiene que llamar a una función de JavaScript. showLoading('.contentPreview')
para mostrar el indicador de carga hideLoading('.contentPreview')
para ocultar el indicador y mostrar el contenido.
p. Ej.:
<p:commandButton id="previewBtn" onstart="showLoading('.contentPreview')" oncomplete="hideLoading('.contentPreview')" value="Preview" update="previewText" actionListener="#{lazyResultBean.loadPreviewContent(result.url)}">
</p:commandButton>
El código para las funciones de JavaScript se ve de la siguiente manera:
function showLoading(clazz) {
console.log('showLoading' + clazz);
var loadingElements = $(clazz + '.loading');
loadingElements.each(function (index, el) {
el.style.display = 'block';
});
var contentElements = $(clazz + '.content');
contentElements.each(function (index, el) {
el.style.display = 'none';
});
}
function hideLoading(clazz) {
console.log('hideLoading' + clazz);
var loadingElements = $(clazz + '.loading');
loadingElements.each(function (index, el) {
el.style.display = 'none';
});
var contentElements = $(clazz + '.content');
contentElements.each(function (index, el) {
el.style.display = 'block';
});
}
bien, pero lo que si quiero provocar diferentes estados de Ajax? No quiero apagarlo completamente. Quiero disparar uno diferente que se comporta de manera diferente – lukas
También estoy interesado en una solución souch ... ¿Has encontrado algo que funciona bien? – simonC
Primefaces 5.1 ya no tiene este atributo 'global'. Cualquier sugerencia. Para el componente autocompletar. –