我有一个基本上是创建窗体的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