2012-07-23 197 views
1

我們正在將應用程序移植到較新版本的RichFaces和JSF(我相信它們分別是4.2.2和2.0),並且正在嘗試進行必要的調整以使應用程序運行起來之前做過的(我沒有很多jsf/richfaces的經驗)。a4j:commandButton oncomplete not firing

在我們的一個頁面上,當我們點擊一​​個按鈕時,我們需要顯示一個彈出窗口,提示「請稍等......」,當處理完成時,彈出窗口需要消失。我開始嘗試這樣的事情:

<a4j:commandButton id="viewEditTop" value="#{SearchBean.mode}" 
         action="#{SearchResultsBean.processSelected}" 
         styleClass="generalButton" onclick="#{rich:component('wait-dialog')}.show()" oncomplete="#{rich:component('wait-dialog')}.hide()"/> 

但未完成似乎並沒有起火。彈出窗口會顯示,但永遠不會消失。經過大量的研究和嘗試各種各樣的事情(主要是試圖調用a4j:狀態並試圖找到有關如何觸發未完成狀態和狀態以及whatnot的詳細信息),我不知道接下來要做什麼。

有誰知道如何讓oncomplete發射?或者如果我應該使用a4j:status,我將如何獲得狀態才能工作?我定義了狀態,添加了「onstart」和「onstop」來顯示/隱藏彈出窗口,並設置我的a4j:commandButton狀態來引用我創建的狀態,但它不起作用。

謝謝!

+0

嘗試刪除的動作,並添加一個'的console.log(「您的自定義消息」),'在「的onComplete」方法檢查動作是否已被調用。之後,確保'SearchResultsBean.processSelected'方法不返回一個字符串,並且不會產生任何異常。 – 2012-07-23 14:38:41

+0

感謝您的信息,我將不得不考慮一下字符串理論。 processSelected方法確實返回一個字符串。爲什麼會導致問題?使用舊版本的jsf/richfaces時,即使processSelected返回一個字符串,它們也有一個不完整的方法。 它返回的字符串用於在faces-config.xml中配置的導航(儘管在我遇到空字符串的麻煩返回時,我只想讓彈出窗口消失而不是導航到不同的頁面)。 – cschick2317 2012-07-23 14:55:02

+1

當導航啓動時,「oncomplete」方法不會觸發。對於這種情況,您可以使用'',並從你的'中刪除這些調用' – 2012-07-23 15:35:39

回答

0
<a4j:commandButton id="viewEditTop" value="#{SearchBean.mode}" 
          action="#{SearchResultsBean.processSelected}" 
          styleClass="generalButton" onbegin="#{rich:component('wait-dialog')}.show()" oncomplete="#{rich:component('wait-dialog')}.hide()"/> 

你可以試試這個我認爲它會工作4 U ...