Vous pouvez enregistrer un prétendu Ajax.Responder globalement pour l'événement onLoading des requêtes Prototype Ajax. Cela se déclencherait pour chaque appel remoteFunction/Ajax dans votre page. Pour ce faire, vous devez mettre quelque chose comme ça quelque part sur votre page ou gsp la mise en page:
<script type="text/javascript">
function showSpinner() {
// TODO show spinner
}
function hideSpinner() {
// TODO hide spinner
}
Ajax.Responders.register({
onLoading: function() {
showSpinner();
},
onComplete: function() {
if(!Ajax.activeRequestCount) hideSpinner();
}
});
</script>
Vous auriez besoin de mettre en œuvre la fonction de showSpinner et hideSpinner bien sûr. Comme un exemple complet, vous pouvez utiliser quelque chose comme:
<script type="text/javascript">
function showSpinner() {
$('spinner').show();
}
function hideSpinner() {
$('spinner').hide();
}
Ajax.Responders.register({
onLoading: function() {
showSpinner();
},
onComplete: function() {
if(!Ajax.activeRequestCount) hideSpinner();
}
});
</script>
<div id="spinner" style="display: none;">
<img src="${createLinkTo(dir:'images',file:'spinner.gif')}" alt="Loading..." width="16" height="16" />
</div>