在每次Ajax调用之前和之后使用Javascript
由于我使用的是在每次Ajax调用之前和之后使用Javascript,java,ajax,jsf,tinymce,Java,Ajax,Jsf,Tinymce,由于我使用的是TinyMCE(请不要进入“Primefaces有一个编辑器”或任何类似的内容),我需要在每次Ajax调用前后执行一小段Javascript。我不希望编辑每一个Ajax调用,因为有很多调用(这样做对于将来的维护是不好的做法) 在页面上执行Javascriptpre-and-post-anyAjax-调用最优雅的解决方案是什么? 注意:我正在为TinyMCE-text区域使用一个自定义的composite。这个对象的任何事件也足够了。尽管要记住,实际的Ajax-触发器可能会被一个完全
TinyMCE
(请不要进入“Primefaces有一个编辑器”或任何类似的内容),我需要在每次Ajax
调用前后执行一小段Javascript
。我不希望编辑每一个Ajax调用,因为有很多调用(这样做对于将来的维护是不好的做法)
在页面上执行Javascript
pre-and-post-anyAjax
-调用最优雅的解决方案是什么?
注意:我正在为
TinyMCE
-text区域使用一个自定义的composite
。这个对象的任何事件也足够了。尽管要记住,实际的Ajax
-触发器可能会被一个完全不同的对象调用(尽管可能会重新启动复合)。JSF的
标记有一个onevent
属性,用于在JSF应用程序中执行Ajax任务。基本上,它指定了一个三次调用的JavaScript函数:在发送AJAX调用之前,在接收AJAX响应之后,以及在更新HTMLDOM之后。正是出于这个目的,PrimeFaces将这些回调分别拆分为onstart
、onsuccess
、oncomplete
和onerror
为了避免重复,您可以在的答案中找到用法示例。使用处理程序
只需将它放在一个JS文件中,该文件包含在所需页面的
中。这将确保它在JSF自己的JSF.js
包含JSF
命名空间之后加载。是的,我知道,但这意味着我需要编辑页面上的每个Ajax
-调用。正如我在问题中所说,我正在寻找一种避免这种情况的方法。例如:一个<<代码> f:事件< /代码>,它在页面上的每个<代码> Ajax调用< /代码>中被触发。在这种情况下,您可以研究JSF.JS并建立几个JS帮助函数来发送Ajax请求,而不是通过标签,而是通过JavaScript。HMM会考虑它,没有默认的代码> JSF -可以这样说吗?我不知道。但出于您的原因,研究编程JS方法绝对是值得的。我在使用jsf.ajax.addOnEvent
时遇到了一个问题,我无法解决这个问题,您可以看看它(问题更新)吗?显然,您没有使用
触发ajax调用。好吧,似乎我误解了这个函数。我想它也会在actionListeners
上执行。将相应地更改我的代码,再次感谢。这与是否使用动作侦听器无关。只需在命令组件中嵌套一个
,但我很惊讶您明确地询问如何侦听ajax请求,而您根本没有触发ajax请求。
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;
}
});