每个Ajax调用的Javascript(之前和之后)

由于我正在使用TinyMCE (请不要进入“Primefaces有一个编辑器”或类似的东西)我需要在每个Ajax -call之前和之后执行一小段Javascript 。 我不想编辑每个Ajax -call,因为有很多(这样做对于任何未来的维护都是不好的做法)。

什么是在页面上任何Ajax -call之前和之后执行Javascript的最优雅的解决方案?

注意:我正在为TinyMCE -textarea使用自定义composite 。 任何事件也是这个对象也足够了。 虽然请记住,实际的Ajax -trigger可能会被一个完全不同的对象调用(尽管可能会重新渲染composite )。

使用jsf.ajax.addOnEvent处理程序。

 jsf.ajax.addOnEvent(function(data) { switch(data.status) { case "begin": // This is invoked right before ajax request is sent. break; case "complete": // This is invoked right after ajax response is returned. break; case "success": // This is invoked right after successful processing of ajax response and update of HTML DOM. // In case you're interested in error handling, use jsf.ajax.addOnError handler. break; } }); 

只需将它放在一个JS文件中,该文件包含在所需页面的中的中。 这将确保它 JSF自己的包含jsf名称空间的jsf.js 之后加载。

JSF的标签有一个属性,用于在JSF应用程序中执行AJAX任务。 基本上它指定了一个名为tripice的JavaScript函数:在发送AJAX调用之前,收到AJAX响应之后以及更新HTML DOM之后。 正是出于这个目的,PrimeFaces已经将这些回调分别分为onstartonsuccessoncompleteonerror

不重复,您可以在表单reRender之后如何重新执行javascript函数的答案中找到用法示例? 。