woj*_*k88 3 javascript jsf primefaces
我需要处理全局ajax响应.当我只想在没有任何参数的情况下调用正常的javascript操作时,一切正常,开箱即用.我可以使用p:ajaxStatus controll,并且应用程序的行为方式正确.
我其实现在需要做的,是处理情况,当Ajax请求期间,出现了externalContext.redirect()调用.它只发生在应用程序的一个地方,但它是从很多地方调用的.我在想,我可以在RequestContext中添加回调参数.但是如何在javascript中访问此参数?
一边看萤火虫,我可以看到callbackParam在JSON响应返回,但我怎么能在JavaScript中访问该值?
它已被添加为默认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)