J'ai eu le même problème que c'était ma solution (pas super simple mais très flexible):
Si vous souhaitez ajouter un Indikator de chargement pour une partie de la page que vous devez ajouter deux <h:panelGroup>
éléments, un pour l'indicateur de chargement et un pour le contenu chargé.
.: par exemple
<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>
important est de définir la styleClass correcte de loading
pour l'indicateur de chargement et content
pour le contenu. Les deux panneaux doivent également avoir une classe qu'ils partagent, dans ce cas la classe contentPreview
.
Pour basculer entre le chargement de l'indicateur et du contenu, il suffit d'appeler une fonction JavaScript. showLoading('.contentPreview')
pour afficher l'indicateur de chargement hideLoading('.contentPreview')
pour masquer l'indicateur et afficher le contenu.
par exemple.:
<p:commandButton id="previewBtn" onstart="showLoading('.contentPreview')" oncomplete="hideLoading('.contentPreview')" value="Preview" update="previewText" actionListener="#{lazyResultBean.loadPreviewContent(result.url)}">
</p:commandButton>
Le code pour les fonctions JavaScript se présente comme suit:
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
, mais si je veux déclencher un statut différent de ajax? Je ne veux pas l'éteindre complètement. Je veux déclencher différent qui se comporte différemment – lukas
Je suis également intéressé par une solution souch ... avez-vous trouvé quelque chose qui fonctionne bien? – simonC
Primefaces 5.1 n'a plus cet attribut 'global'. Toute suggestion. Pour componente autocomplete. –