2011-07-15 48 views
3

我有一個JSF驗證表單,需要在彈出窗口中打開。當我提交表單時,我調用bean方法,將數據發送到後端,如果成功,則彈出窗口應該自動關閉。如何在驗證失敗時保持彈出窗體打開並在成功保存時關閉它?

數據存儲成功,我需要從bean方法返回什麼,以便彈出窗口自動關閉。

而且,如何在提交表單後獲得回覆?那可能嗎?

回答

0

如果您使用RichFaces,則可能需要考慮使用Rich Modal Window而不是普通的彈出窗口。

如果您的形式是<a4j:form>,您可以使用<a4j:commandButton>爲AJAX提交,並提供一個oncomplete屬性給它的JavaScript成功提交後執行。這個javascript可以是一個調用Richfaces.hideModalPanel('pnl');與您的模態的ID作爲參數。

1

下面的代碼可以用於保持顯示/隱藏基於所述驗證​​彈出:

<a4j:commandButton value="Create Quote" id="createQuote" action="#{quoteAction.createQuote}" 
           immediate="false" 
           execute="envType country partner @this" 
           render="envType country partner" 
           oncomplete="if (#{facesContext.maximumSeverity == null}) {#{rich:component('quoteResultPanel')}.show();}"> 
      </a4j:commandButton> 

#{facesContext.maximumSeverity == null}將驗證對任何驗證消息(一個或多個),如果這不是空,則用戶將不被顯示彈出式窗口將顯示其他用戶。你甚至可以用另一種方式來使用它,例如只有在沒有驗證消息的情況下關閉彈出窗口,否則使用消息保持彈出窗口。

oncomplete="if (#{facesContext.maximumSeverity == null}) {#{rich:component('quoteResultPanel')}.hide();}" 
+0

這是richfaces的正確答案,以防萬一還想知道 –

相關問題