Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PrimeFaces执行条件JavaScript_Javascript_Jsf_Primefaces - Fatal编程技术网

使用PrimeFaces执行条件JavaScript

使用PrimeFaces执行条件JavaScript,javascript,jsf,primefaces,Javascript,Jsf,Primefaces,我遇到了一个非常有趣的问题,那就是在登录我正在处理的应用程序时,如何有条件地调用JavaScript。基本上,我只希望在用户成功登录后显示JavaScript弹出消息 在我的xhtml页面中,我有以下测试JavaScript函数,然后我有一个commandButton,如下所示: <script type="text/javascript"> function hello() { alert("Hello from PrimeFaces calling JavaScr

我遇到了一个非常有趣的问题,那就是在登录我正在处理的应用程序时,如何有条件地调用JavaScript。基本上,我只希望在用户成功登录后显示JavaScript弹出消息

在我的xhtml页面中,我有以下测试JavaScript函数,然后我有一个commandButton,如下所示:

  <script type="text/javascript">
  function hello() {
    alert("Hello from PrimeFaces calling JavaScript on the page");
  }
</script>

<-- Other html code -->

<p:commandButton id="login" value="Login" update="out" action="#{login.login}" styleClass="button"/>
现在,我的JavaScript函数应该只在屏幕上弹出一条测试消息,但是如果我能让它工作,我希望显示一些更有用的东西

其思想是,如果登录失败,登录页面将再次显示错误消息,这将正常工作。如果登录成功,应用程序将导航到optNum提供的页码。这也是正确的。但是,在它导航到下一个页面之前,我希望它显示弹出消息,然后单击JavaScript消息中的“OK”,它应该导航到该页面

相反,不会显示弹出窗口,它会直接进入所需页面,因此它看起来好像在有机会执行JavaScript之前就离开了页面。这是确认如果我更换

return "option" + optNum;
// by
return "";
在方法结束时,弹出消息显示,而不尝试导航到下一页,并在单击“确定”后停留在该页上。然而,由于某种原因,我不明白为什么,有时它会在第二次单击按钮时导航到所需的页面

如何让代码在离开页面之前执行JavaScript?将JavaScript放在它将导航到的页面或资源中是不起作用的


有人知道怎么帮我吗?非常感谢。

为什么您不能在用户登录页上使用
?或者您可以使用PrimeFaces组件做得更好。

您做错了,您的导航不是在登录时进行的,而是在单击“确定”按钮时进行的

您可以使用p:daialog来显示JSF弹出窗口

<p:commandButton id="login" value="Login" update="out" 
    action="#{login.login}" styleClass="button"/>

<p:dialog visible="#{login.loginSuccess}">
 <h:commandButton action="#{navigateToInbox}" value="ok" />
</p:dialog>
查看showcase以了解如何使用primefaces对话框


JavaScript代码用于从页面读取隐藏值,然后显示在弹出消息中。当我的CommittedButton上有一个无条件的onclick=“javascript_function()”时,这一部分也可以工作。
<p:commandButton id="login" value="Login" update="out" 
    action="#{login.login}" styleClass="button"/>

<p:dialog visible="#{login.loginSuccess}">
 <h:commandButton action="#{navigateToInbox}" value="ok" />
</p:dialog>
public String login() {

     // Other code

     // return "login" on failure - go back to login.xhtml

if(successfulLogin)
     loginSuccess = true;
}