使用发出请求时,如何显示一些加载消息<f:ajax>?
<f:ajax>
如果您尚未使用可能已经有现成组件的第3方组件库,例如带有PrimeFaces的组件<p:ajaxStatus>,则可以使用JSF提供的JavaScript jsf.ajax.addOnEvent()函数(最终也可以使用jsf.ajax.addOnError())在ajax上挂钩函数事件。
<p:ajaxStatus>
jsf.ajax.addOnEvent()
jsf.ajax.addOnError()
这是一个基本的启动示例:
<script> jsf.ajax.addOnEvent(function(data) { var ajaxstatus = data.status; // Can be "begin", "complete" and "success" var ajaxloader = document.getElementById("ajaxloader"); switch (ajaxstatus) { case "begin": // This is called right before ajax request is been sent. ajaxloader.style.display = 'block'; break; case "complete": // This is called right after ajax response is received. ajaxloader.style.display = 'none'; break; case "success": // This is called when ajax response is successfully processed. // NOOP. break; } }); </script> <img id="ajaxloader" src="ajaxloader.gif" style="display: none;" />
另请参阅JSF 2.0规范的第13.3.5.2章:
13.3.5.2监视所有Ajax请求的事件 JavaScript API提供了jsf.ajax.addOnEvent可用于注册JavaScript功能的功能,当发生任何Ajax请求/响应事件时,该功能将得到通知。有关更多详细信息,请参见第14.4节“注册回调函数”。该jsf.ajax.addOnEvent函数接受一个JavaScript函数参数,当在任何Ajax请求/响应事件周期中发生事件时,该参数将被通知。该实现必须确保必须根据表14-3“事件”中概述的事件来调用已注册的JavaScript函数。
JavaScript API提供了jsf.ajax.addOnEvent可用于注册JavaScript功能的功能,当发生任何Ajax请求/响应事件时,该功能将得到通知。有关更多详细信息,请参见第14.4节“注册回调函数”。该jsf.ajax.addOnEvent函数接受一个JavaScript函数参数,当在任何Ajax请求/响应事件周期中发生事件时,该参数将被通知。该实现必须确保必须根据表14-3“事件”中概述的事件来调用已注册的JavaScript函数。
jsf.ajax.addOnEvent
顺便说一下,您可以从http://www.ajaxload.info免费获取一些很棒的Ajax加载器gif 。