我对Primefaces 3对话框的构造感到困惑。
我在SO中看到有这种模式的问题。表格在对话框之外。
<h:form>
<p:dialog id="dialog" modal="true" widgetVar="dlg">
</p:dialog>
</h:form>
但是其他问题也是如此。
<p:dialog id="dialog" modal="true" widgetVar="dlg">
<h:form>
</h:form>
</p:dialog>
Primefaces展示http://www.primefaces.org/showcase/ui/dialogLogin.jsf支持后者。
如果有任何合理的理由使用其中一个,我会感到困惑吗?
由于
答案 0 :(得分:15)
您最好使用<h:form>
<p:dialog
这样的内容
<p:dialog id="dialog" modal="true" widgetVar="dlg">
<h:form>
</h:form>
</p:dialog>
因为对话框内容可能会从您的页面中“删除”并附加到DOM树中的其他位置,因此如果您将对话框放在某个表单中,则可能导致您的对话框重定位到其他位置< / em>并导致所有按钮/链接和其他元素停止工作(这是SO中非常常见的问题)
因此,为了安全起见,请在<h:form>
代码中添加<p:dialog
标记
另一个例子是在对话框中使用appendToBody="true"
:
如果对话框在h:form组件中,并且在浏览器上启用了appendToBody 对话框不在形式之内,可能会导致意外结果。在这种情况下,将表单嵌套在里面 对话框。