Jsf 如何使用Primefaces发送ajax回调参数?
我正试图用RequestContext发送一个Ajax回调,但无法正常工作 我尝试了,但是javascript函数中的“args.loggedIn”始终未定义,而“args”是一个对象 这是我的密码: dialogLogin.xhtml:Jsf 如何使用Primefaces发送ajax回调参数?,jsf,primefaces,Jsf,Primefaces,我正试图用RequestContext发送一个Ajax回调,但无法正常工作 我尝试了,但是javascript函数中的“args.loggedIn”始终未定义,而“args”是一个对象 这是我的密码: dialogLogin.xhtml: 点击 函数handleLoginRequest(xhr,status,args){ 如果(args.validationFailed | | |!args.loggedIn){ jQuery('#dialog').effect(“shake”,{times:
点击
函数handleLoginRequest(xhr,status,args){
如果(args.validationFailed | | |!args.loggedIn){
jQuery('#dialog').effect(“shake”,{times:3},100);
}否则{
dlg.hide();
jQuery(“#loginLink”).fadeOut();
}
}
LogBean.java:
@ManagedBean
公共类LogBean{
私有字符串用户名;
私有字符串密码;
//接球手和接球手
公共无效登录(ActionEvent ActionEvent){
RequestContext=RequestContext.getCurrentInstance();
布尔loggedIn=false;
如果(username!=null&&username.equals(“admin”)&&password!=null&&password.equals(“admin”){
loggedIn=true;
}否则{
loggedIn=false;
}
System.out.println(“loggedIn:+loggedIn”);
addCallbackParam(“loggedIn”,loggedIn);
}
}
调用javascript函数“handleLoginRequest”,但“args.loggedIn”始终未定义。我不明白为什么
发送的响应(我从Firebug获得)是:
非常感谢您的帮助 如果验证失败,您将从应用程序获得以下响应:
<extension ln="primefaces" type="args">{"validationFailed":true}</extension>
此响应具有
loggedIn
值,因此调用args.loggedIn
会导致false
。因为调用args的JSON响应中没有validationFailed
。validationFailed
会导致未定义。如果验证失败,您将从应用程序获得以下响应:
<extension ln="primefaces" type="args">{"validationFailed":true}</extension>
此响应具有
loggedIn
值,因此调用args.loggedIn
会导致false
。因为调用参数的JSON响应中没有validationFailed
。validationFailed导致未定义。托管bean的作用域是什么?我尝试了SessionScoped、ViewScoped、RequestScoped。。。结果在所有情况下都是一样的。我试着运行你的示例,结果很好。您如何检查args
是否未定义?如果(args.validationFailed | | | | |!args.loggedIn),您是否尝试过在之前执行console.log(args)
?我尝试过在控制台中编写“args”和“args.loggedIn”:args=[object object]args.loggedIn=undefined这意味着args
并不像您在文章中所说的那样未定义。它是一个物体。问题解决了?托管bean的作用域是什么?我尝试了SessionScoped、ViewScoped、RequestScoped。。。结果在所有情况下都是一样的。我试着运行你的示例,结果很好。您如何检查args
是否未定义?如果(args.validationFailed | | | | |!args.loggedIn)
,您是否尝试过在之前执行console.log(args)
?我尝试过在控制台中编写“args”和“args.loggedIn”:args=[object object]args.loggedIn=undefined这意味着args
并不像您在文章中所说的那样未定义。它是一个物体。问题解决了?好的,所以我们应该在响应中始终使用“validationFailed”或“loggedIn”。但就我而言,两者都是未定义的!(我在JS函数中的“if”前面加了一个“console.log”)。这对你有用吗?您是否得到了预期的JSON响应(如我在回答中所述)?你在用哪个浏览器?这个演示对我来说仍然不起作用。我用Firebug的回复更新了我的第一篇帖子(我可以在Firebug javascript控制台中看到它,可能是我做错了吗?),我尝试了Firefox和Chromium,两者的结果都是一样的。你的代码看起来不错,复制粘贴对我来说很有效。PrimeFaces showcase上的原始演示适合您吗?在PrimeFaces showcase上,它可以工作,但如果我只是在我的环境中复制/粘贴所有代码,它仍然不能工作。。。如果我在showcase上查看FireBug,我可以看到带有Json的“extension”标记,如您所说。好的,所以我们应该在响应中始终使用“validationFailed”或“loggedIn”。但就我而言,两者都是未定义的!(我在JS函数中的“if”前面加了一个“console.log”)。这对你有用吗?您是否得到了预期的JSON响应(如我在回答中所述)?你在用哪个浏览器?这个演示对我来说仍然不起作用。我用Firebug的回复更新了我的第一篇帖子(我可以在Firebug javascript控制台中看到它,可能是我做错了吗?),我尝试了Firefox和Chromium,两者的结果都是一样的。你的代码看起来不错,复制粘贴对我来说很有效。PrimeFaces showcase上的原始演示适合您吗?在PrimeFaces showcase上,它可以工作,但如果我只是在我的环境中复制/粘贴所有代码,它仍然不能工作。。。如果我在showcase上查看FireBug,我可以看到带有Json的“扩展”标记,如您所说。