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