我有一個基本上是創建窗體的JSF頁面。該表格由多種輸入字段和一系列子元素組成。JSF h:form和PrimeFaces驗證問題p:對話框
要添加子元素,請單擊「添加元素」鏈接,使用PrimeFaces p:dialog標籤彈出對話框。它類似於素面頁上的登錄面板演示在這裏,完全與p:咆哮的驗證消息:
http://www.primefaces.org/showcase/ui/dialogLogin.jsf
我的問題是,當我在對話框中我看到咆哮驗證點擊「添加」對話框中字段的消息以及主窗體上的字段。我只想看到對話框的消息。
有沒有辦法做到這一點?我嘗試在窗體中嵌入窗體,但它不起作用。也就是說,我試過...
<h:form>
<p:messages /> <!-- show validation messages for create form contents -->
<h:inputText value .../>
<h:dataTable value .../> <!-- list of sub elements -->
<h:commandLink "shows the add element dialog" ... />
<p:growl /> <!-- shows the validation messages for dialog contents -->
<p:dialog>
<h:form>
<h:inputText value .../>
<p:commandButton "validate dialog box fields then add the item to the list" .../>
</h:form>
</p:dialog>
</h:form>
......但那並沒有奏效。任何幫助是極大的讚賞!
嗨馬特,我做了你所說的一切。它有效,但我仍然有我的副作用。不確定最好的方法來處理它。試想一下:我有一個「全名」字段和一個「電話號碼」列表(在h:dataTable中)。要將電話號碼添加到列表中,請單擊「添加電話號碼」,然後出現對話框,在對話框中輸入電話號碼並單擊「添加」按鈕。問題是咆哮向我顯示驗證消息「Full Name所需的值」,因爲它驗證頁面上的所有字段,而不僅僅是對話框上的字段。 「添加」是一個Ajax請求。 – 2011-03-07 15:22:51
嗯,我想你應該把全名的輸入字段放在與對話框不同的窗體中。如果您提交表單,即使只更新了一個子集,也會驗證所有元素。所以使用兩種形式(不嵌套!)。 – 2011-03-07 18:21:10
多數民衆贊成它,兩種形式,不嵌套的作品!謝謝馬特! – 2011-03-07 18:52:28