2011-03-30 69 views
2

我有一個primefaces對話框的輸入形式,我有服務器側valdation它檢查輸入字段,當用戶點擊一個Primefaces對話窗口 - Valiation關閉對話框

<p:commandButton ajax="false" action="#{bean.validate}"/>

在驗證結束後,我返回null以保持在同一頁面上,但由於這是一個對話框,因此它會關閉。有沒有什麼辦法可以在驗證問題時保持對話框打開,在沒有驗證時關閉?

+0

請檢查了這一點: http://stackoverflow.com/a/16069182/819651 (我相信這是一個重複) – 2013-04-18 09:52:45

回答

2

沒有自己試試吧,但你可以根據驗證消息的存在切換對話框的可見性:

<p:dialog visible=」#{not empty facesContext.messages}」 ...> 
1

我是RichFaces的用戶,他們的modalPanel(的<p:dialog>相當於提供了一個showWhenRendered屬性,可能是你的情況有所幫助。

不幸的是,<p:dialog>似乎並不具有這樣的功能。你可以做什麼,是一些JavaScript功能的發揮。

首先,在bean中保留一個標誌(一個布爾屬性,初始化爲false),以指示是否存在驗證錯誤。我們稱這個標誌myBean.validationError

現在,在您的頁面中,您可以添加一個JavaScript代碼來檢查此屬性並最終顯示對話框。類似的東西(把它放在網頁的結束,或者至少對話框聲明之後):

<script type="text/javascript"> 
    if (#{myBean.validationError}) { 
     // showDialog(); 
     myDialog.show(); 
    } 
</script> 

因此,在你使用的情況下,該頁面將重新顯示,並且因爲有驗證錯誤,旗設置爲true。然後,對if語句進行評估,並向用戶顯示對話框。