2012-11-28 119 views
0

引用此問題是因爲問題與我的相同,但我不認爲該解決方案適用於我的情況。繼續按兩次命令按鈕

continuation of pressing button twice

我有一系列需要填寫並提交表單的工作流,我想顯示一個模式覆蓋用戶點擊「下一步」按鈕後。爲了顯示這個覆蓋,我需要使命令按鈕使用ajax。這會導致鏈接問題中描述的不良行爲。

鏈接問題的解決方案似乎是「不要使用Ajax進行導航」,但我認爲在我的情況下,我可能不得不爲了展示此等待對話。有沒有其他方法可以保證下一頁中的視圖狀態將被正確更新,以便當我繼續瀏覽時,我不需要按兩次按鈕?

我正在使用Primefaces 3.3.1。

<p:commandButton id="nextCommand" value="Next" 
    action="#{backingBean.processInputAndDetermineOutcome}" 
    onclick="waiter.show();" oncomplete="waiter.hide();"> 
    <f:param name="validate" value="true" /> 
</p:commandButton> 

的「驗證」參數是我使用一個自定義BeanValidator讓自己的「後退」按鈕提交表單,沒有處理任何valdations的更新模型的標誌。我認爲這不會對這個問題產生任何影響,但我認爲我應該提及這個commandButton中涉及的其他部分。

回答

1

最好的選擇是用重定向進行導航。

public String processInputAndDetermineOutcome() { 
    // ... 

    return outcome + "?faces-redirect=true"; 
} 

否則,肯定如果你實際觀察中,而不是在其他更理智,瀏覽器IE瀏覽器的問題,那麼你可能想嘗試的具體PrimeFaces的JavaScript修復如下建議:JSF Language switcher and ajax update

或者,如果您實際上在觀察<f:ajax>而不是<p:ajax>中的問題,請嘗試使用JSF特定的JavaScript修復程序:h:commandButton/h:commandLink does not work on first click, works only on second click

+0

我其實沒有在IE中試過這個,我看到的行爲是在Firefox中。另外,我並沒有特別添加ajax組件,而是使用帶默認ajax行爲的。但是,您添加faces-redirect = true參數的建議解決了我的問題。謝謝! – user1535568