我有一个基本上是创建表单的JSF页面。表单由各种输入字段和子元素列表组成。
要添加子元素,请单击“添加元素”链接,该链接使用PrimeFaces p:对话框标记弹出对话框。它类似于此处主要页面页面上的登录面板演示,包含p:growl验证消息:
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>
......但那没用。非常感谢任何帮助!
答案 0 :(得分:5)
首先,你不能在另一个表格中嵌入一个表格。我认为这不是有效的HTML。
p:growl
的行为与h:messages
相似。它显示页面所有元素的消息(不限于一种形式)。您可以通过设置id
属性将其限制为仅全局消息(没有globalOnly="true"
的消息)。
将commandButton更改为仅更新p:growl
,并确保它是commandButton(ajax=true
)触发的ajax请求。 p:commandButton
具有ajax=true
作为默认行为。所以如果你没有明确地改变它,那么它就是一个ajax请求。