Jsf Primefaces智能地找到对话框?

Jsf Primefaces智能地找到对话框?,jsf,primefaces,ajax4jsf,Jsf,Primefaces,Ajax4jsf,这是如何工作的: <h:form id="newForm"> <p:dialog header="x" widgetVar="newDialog" id="newDlg" modal="true"> ... <p:commandButton value="Close" update=":form1:dt1" id="cancelNew" immediate="true"> <f:ajax event="click" onevent="xy

这是如何工作的:

<h:form id="newForm">
<p:dialog header="x" widgetVar="newDialog" id="newDlg" modal="true">
...
  <p:commandButton value="Close" update=":form1:dt1" id="cancelNew" immediate="true">
      <f:ajax event="click" onevent="xyz.hide()" />
  </p:commandButton>

...

onevent
指不存在的名称;然而,当我点击按钮时,对话框关闭了。如果省略ajax元素,它不会关闭。这是某种PF(4)黑魔法吗?

我想当你省略
onevent
时,
更新就会运行,然后你转到
:form1:dt1
。这一切都正常,对话框按其应做的那样关闭(因为
更新
)。但是,当您有
onevent
时,您会得到一个异常(据我所知),并且由于该异常,对话框保持打开状态。如果您检查日志,您应该会看到异常

对话框内部还应存在一个表单,如:

<p:dialog widgetVar="Dialog" .........  

         <h:form id="formDialog">  
              ...............

不,没有例外。此外,如果省略
更新
,它也会关闭。假设所有元素都存在,例如表单对话框等。对吗?此外,我假设对话框内部有一个带有
表单
的标记。我认为最好发布页面的代码,因为表单和对话框的层次结构在发布相关内容时起着重要作用。这里没有其他形式的魔法。如果它不在那里,它就不在那里。查看生成的HTML的源代码,查看生成的onclick标记是什么。我很确定它仍然是
xyz.hide()