我在尝试弄清楚如何在登录我正在处理的应用程序时有条件地调用 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"/>
然后在我的bean中,我有以下代码:
public String login() {
// Other code
// return "login" on failure - go back to login.xhtml
// On success do the following:
RequestContext context = RequestContext.getCurrentInstance();
context.execute("hello()");
return "option" + optNum; // Go on to option?.xhtml where ? = 1, 2, or 3
}
现在我的 JavaScript 函数只应该在屏幕上弹出一条测试消息,但如果我能让它工作,我希望显示一些更有用的东西。
这个想法是,如果登录失败,登录页面会再次显示错误消息,这样可以正常工作。如果登录成功,应用程序将导航到 optNum 给出的页码。这也可以正常工作。但是,在它导航到下一页之前,我希望它显示弹出消息,然后单击 JavaScript 消息中的“确定”,然后它应该导航到该页面。
相反,不会显示弹出窗口,而是直接转到所需的页面,因此它看起来好像在有机会执行 JavaScript 之前导航离开页面。如果我更换,这将得到确认
return "option" + optNum;
// by
return "";
在该方法结束时,弹出消息随即显示而不会尝试导航到下一页,并在单击“确定”后停留在该页面上。但是,由于某种我不明白的原因,有时它会在第二次单击按钮时导航到所需的页面。
在离开页面之前如何获取执行 JavaScript 的代码?将 JavaScript 放在它将导航到的页面或资源中不起作用。
有人知道如何帮助我吗?非常感谢。