ho avuto lo stesso problema questa è stata la mia soluzione (non super semplice ma molto flessibile):
Se si desidera aggiungere un carico Indikator per alcuni parte della pagina è necessario aggiungere due <h:panelGroup>
elementi, uno per l'indicatore di caricamento e uno per il contenuto caricato.
es .:
<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 è quello di impostare la corretta styleClass del loading
per l'indicatore di caricamento e content
per il contenuto. Entrambi i pannelli devono anche avere una classe che condividono, in questo caso la classe contentPreview
.
Per passare dall'indicatore di caricamento al contenuto è sufficiente chiamare una funzione JavaScript. showLoading('.contentPreview')
per mostrare l'indicatore di caricamento hideLoading('.contentPreview')
per nascondere l'indicatore e mostrare il contenuto.
ad es.:
<p:commandButton id="previewBtn" onstart="showLoading('.contentPreview')" oncomplete="hideLoading('.contentPreview')" value="Preview" update="previewText" actionListener="#{lazyResultBean.loadPreviewContent(result.url)}">
</p:commandButton>
Il codice per le funzioni JavaScript appare come segue:
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';
});
}
bene, ma cosa succede se voglio innescare diverso stato di Ajax? Non voglio spegnerlo completamente. Voglio innescare uno diverso che si comporta in modo diverso – lukas
Mi interessa anche trovare una soluzione ... hai trovato qualcosa che funzioni bene? – simonC
Primefaces 5.1 non ha più questo attributo 'global'. Qualche suggerimento. Per componente completamento automatico. –