使用PrimeFaces执行条件JavaScript
我遇到了一个非常有趣的问题,那就是在登录我正在处理的应用程序时,如何有条件地调用JavaScript。基本上,我只希望在用户成功登录后显示JavaScript弹出消息 在我的xhtml页面中,我有以下测试JavaScript函数,然后我有一个commandButton,如下所示:使用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
<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;
}