【发布时间】:2013-12-10 04:41:15
【问题描述】:
默认情况下,JSF ajax(JS) 事件会排队,以便按顺序执行。有没有办法连接到那个框架?
我想要做的是让我的 JS 事件也使用这个队列。是我可以使用的全局变量吗?
【问题讨论】:
标签: javascript ajax jsf
默认情况下,JSF ajax(JS) 事件会排队,以便按顺序执行。有没有办法连接到那个框架?
我想要做的是让我的 JS 事件也使用这个队列。是我可以使用的全局变量吗?
【问题讨论】:
标签: javascript ajax jsf
没有,但您可以通过<f:ajax onevent> 和jsf.ajax.addOnEvent 在JSF ajax 请求上挂钩事件侦听器。然后,您可以在发送 ajax 请求之前,或在 ajax 响应到达之后,和/或在更新 HTML DOM 之后执行一些 JS 代码。根据具体的功能要求,这可能是实际上您正在寻找的。p>
下面是这样一个事件监听器函数的样子:
function someAjaxEventListener(data) {
var status = data.status;
switch(status) {
case "begin":
// This is invoked right before ajax request is sent.
break;
case "complete":
// This is invoked right after ajax response is arrived.
break;
case "success":
// This is invoked right after HTML DOM is updated.
break;
}
}
您可以通过以下方式在每个<f:ajax> 基础上注册它:
<f:ajax ... onevent="someAjaxEventListener" />
以下是在视图范围内注册它的方法(因此,挂钩每个<f:ajax>):
<h:outputScript>jsf.ajax.addOnEvent(someAjaxEventListener);</h:outputScript>
(最好放在<h:outputScript name>加载的某个JS文件中)
【讨论】:
Queue 对象并将您的请求排入队列。顺便说一句,Multipart 表单的排队机制被破坏了。如果它排队一个请求,它将不会处理进一步的请求。我提出了相关的错误:JAVASERVERFACES-3106