由于我正在使用TinyMCE
(请不要进入“Primefaces有编辑器”或类似的东西)我需要在每个{{之前和之后Javascript
执行一小段Ajax
1}} - 打电话。我不想编辑每个Ajax
- 因为有很多事情要求这样做(这样做对未来的任何维护都是不好的做法)。
在页面上调用任何Javascript
之前和之后执行Ajax
的最优雅解决方案是什么?
注意:我正在为composite
- textarea使用自定义TinyMCE
。任何事件也都是这个对象也足够了。但请记住,实际的Ajax
- 触发器可能由完全不同的对象调用(尽管可能会重新呈现composite
)。
答案 0 :(得分:7)
使用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文件中,<h:outputScript target="head">
包含在所需页面的<h:body>
中。这将确保在 JSF自己的jsf.js
包含jsf
命名空间之后加载。
答案 1 :(得分:0)
JSF的onevent
标记有一个<f:ajax>
属性,用于在JSF应用程序中执行AJAX任务。基本上它指定了一个名为tripice的JavaScript函数:在发送AJAX调用之前,收到AJAX响应之后以及更新HTML DOM之后。正是出于这个目的,PrimeFaces已将这些回调分别分为onstart
,onsuccess
,oncomplete
和onerror
。
不要重复,您可以在How to re-execute javascript function after form reRender?的答案中找到用法示例。