我有一個primefaces對話框的輸入形式,我有服務器側valdation它檢查輸入字段,當用戶點擊一個Primefaces對話窗口 - Valiation關閉對話框
<p:commandButton ajax="false" action="#{bean.validate}"/>
。
在驗證結束後,我返回null
以保持在同一頁面上,但由於這是一個對話框,因此它會關閉。有沒有什麼辦法可以在驗證問題時保持對話框打開,在沒有驗證時關閉?
我有一個primefaces對話框的輸入形式,我有服務器側valdation它檢查輸入字段,當用戶點擊一個Primefaces對話窗口 - Valiation關閉對話框
<p:commandButton ajax="false" action="#{bean.validate}"/>
。
在驗證結束後,我返回null
以保持在同一頁面上,但由於這是一個對話框,因此它會關閉。有沒有什麼辦法可以在驗證問題時保持對話框打開,在沒有驗證時關閉?
沒有自己試試吧,但你可以根據驗證消息的存在切換對話框的可見性:
<p:dialog visible=」#{not empty facesContext.messages}」 ...>
我是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
語句進行評估,並向用戶顯示對話框。
請檢查了這一點: http://stackoverflow.com/a/16069182/819651 (我相信這是一個重複) – 2013-04-18 09:52:45