我在試圖弄清楚如何在登錄我正在處理的應用程序時有條件地調用JavaScript時遇到了一個最有趣的問題。基本上,我只想要一個JavaScript彈出消息顯示,如果用戶已成功登錄。將PrimeFaces用於條件JavaScript執行
在我的XHTML頁面,我有以下測試JavaScript函數,再後來我有一個命令如下:
<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"/>
然後在我的豆,我有以下代碼:
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放在它將導航到或在資源中的頁面上不起作用。
有人知道如何幫助我嗎?非常感謝。
的JavaScript代碼的目的是從頁讀取隱藏值,然後顯示在彈出消息中。當我在我的commendButton上有一個無條件的onclick =「javascript_function()」時,這部分也適用。 – csharp 2013-04-10 13:08:58