每个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已经将这些回调分别分为onstart
, onsuccess
, oncomplete
和onerror
。
不重复,您可以在表单reRender之后如何重新执行javascript函数的答案中找到用法示例? 。