PrimeFaces中的RequestContext和Ajax状态

woj*_*k88 3 javascript jsf primefaces

我需要处理全局ajax响应.当我只想在没有任何参数的情况下调用正常的javascript操作时,一切正常,开箱即用.我可以使用p:ajaxStatus controll,并且应用程序的行为方式正确.

我其实现在需要做的,是处理情况,当Ajax请求期间,出现了externalContext.redirect()调用.它只发生在应用程序的一个地方,但它是从很多地方调用的.我在想,我可以在RequestContext中添加回调参数.但是如何在javascript中访问此参数?

一边看萤火虫,我可以看到callbackParam在JSON响应返回,但我怎么能在JavaScript中访问该值?

Bal*_*usC 5

它已被添加为默认args对象的属性,可在oncomplete上下文中使用.

所以,例如

RequestContext.getCurrentInstance().addCallbackParam("foo", "bar");
Run Code Online (Sandbox Code Playgroud)

可用

oncomplete="console.log(args.foo)"
Run Code Online (Sandbox Code Playgroud)

也可以看看:


更新:根据评论,结果是失败<p:ajaxStatus>.我建议将它作为PF人员的一个错误报告,这些争论不可用<p:ajaxStatus oncomplete>.同时,你可以用它由加载下面的脚本解决方法它<h:outputScript target="head">里面的<h:body>(以保证它的加载 PrimeFaces脚本):

var originalPrimeFacesAjaxUtilsSend = PrimeFaces.ajax.AjaxUtils.send;
PrimeFaces.ajax.AjaxUtils.send = function(cfg) {
    var originalOncomplete = cfg.oncomplete;
    cfg.oncomplete = function() {
        ajaxStatusOncomplete.apply(this, arguments);

        if (originalOncomplete) {
            originalOncomplete.apply(this, arguments);
        }
    };
    originalPrimeFacesAjaxUtilsSend.apply(this, arguments);
};

function ajaxStatusOncomplete(xhr, status, args) {
    // Do your thing here.
}
Run Code Online (Sandbox Code Playgroud)