我有一個JSF驗證表單,需要在彈出窗口中打開。當我提交表單時,我調用bean方法,將數據發送到後端,如果成功,則彈出窗口應該自動關閉。如何在驗證失敗時保持彈出窗體打開並在成功保存時關閉它?
數據存儲成功,我需要從bean方法返回什麼,以便彈出窗口自動關閉。
而且,如何在提交表單後獲得回覆?那可能嗎?
我有一個JSF驗證表單,需要在彈出窗口中打開。當我提交表單時,我調用bean方法,將數據發送到後端,如果成功,則彈出窗口應該自動關閉。如何在驗證失敗時保持彈出窗體打開並在成功保存時關閉它?
數據存儲成功,我需要從bean方法返回什麼,以便彈出窗口自動關閉。
而且,如何在提交表單後獲得回覆?那可能嗎?
看這裏Using JavaServer Faces (JSF) Popup Window Example。請注意,MyFaces Orchestra支持即開即用的多窗口應用程序。
如果您使用RichFaces,則可能需要考慮使用Rich Modal Window而不是普通的彈出窗口。
如果您的形式是<a4j:form>
,您可以使用<a4j:commandButton>
爲AJAX提交,並提供一個oncomplete
屬性給它的JavaScript成功提交後執行。這個javascript可以是一個調用Richfaces.hideModalPanel('pnl');
與您的模態的ID作爲參數。
下面的代碼可以用於保持顯示/隱藏基於所述驗證彈出:
<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();}"
這是richfaces的正確答案,以防萬一還想知道 –