适当构造Primefaces对话框

时间:2012-05-14 07:38:36

标签: primefaces

我对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支持后者。

如果有任何合理的理由使用其中一个,我会感到困惑吗?

由于

1 个答案:

答案 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   对话框不在形式之内,可能会导致意外结果。在这种情况下,将表单嵌套在里面   对话框。