有没有办法将我的JS函数排队到JSF事件队列?

时间:2013-12-09 18:55:06

标签: javascript ajax jsf

默认情况下,JSF ajax(JS)事件排队,以便按顺序执行。有没有办法挂钩到该框架?

我想要做的是让我的JS事件也使用这个队列。我可以使用全局变量吗?

1 个答案:

答案 0 :(得分:1)

没有,但您可以通过<f:ajax onevent>jsf.ajax.addOnEvent在JSF ajax请求上挂钩事件监听器。然后,您可以在发送ajax请求之前,或者在到达ajax响应之后,和/或在更新HTML DOM之后执行一些JS代码。根据具体的功能要求,可能实际您正在寻找的东西。

以下是这样的事件监听器函数的样子:

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文件中)