适当构造Primefaces对话框

Mar*_*ada 7 primefaces

我对Primefaces 3对话框的构造感到困惑.

我在SO中看到有这种模式的问题.表单在对话框之外.

<h:form>
  <p:dialog id="dialog" modal="true" widgetVar="dlg">
  </p:dialog>
</h:form>
Run Code Online (Sandbox Code Playgroud)

但其他问题有这个.

<p:dialog id="dialog" modal="true" widgetVar="dlg">
    <h:form>      
    </h:form>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)

Primefaces展示了http://www.primefaces.org/showcase/ui/dialogLogin.jsf赞成后者.

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

谢谢

Dan*_*iel 15

你总是更喜欢使用这样的<h:form>内部<p:dialog

<p:dialog id="dialog" modal="true" widgetVar="dlg">
    <h:form>      
    </h:form>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)

因为对话框内容可能会从您的页面中"删除"并添加到DOM树中的其他位置,因此如果您将对话框放在某个表单中,它可能会导致您的对话框重新定位到其他位置并导致所有按钮/链接和其他元素停止工作(这是SO中一个非常常见的问题)

因此,为了在安全方面放置您在<h:form>标签内<p:dialog标记的地方

另一个例子是appendToBody="true"在对话框中使用时:

如果对话框位于h:form组件中并且启用了appendToBody,则浏览器对话框将不在表单中,并可能导致意外结果.在这种情况下,将窗体嵌套在对话框中.