JSF 2.0 Primefaces关闭复合组件中的对话框

Syd*_*ney 3 jsf primefaces jsf-2

我想在对话框中显示复合组件.它工作但是如何从复合组件关闭该对话框.

<p:commandButton value="Display Data Value Assertion Dialog" onclick="dlg2.show();" type="button"/> 
<p:dialog header="Modal Dialog" widgetVar="dlg2" modal="true" height="600" width="800">  
        <tcmt:DataValueAssertion managedBean="#{dataValueAssertionController}"/>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)

在我的复合组件中:

        <h:commandButton value="Save Assertions">
            <f:ajax listener="#{datatypeAssertionController.saveDatatypeAssertion}"></f:ajax>
        </h:commandButton>

        <h:commandLink value="Close">
            <f:ajax listener="#{datatypeAssertionController.closeDatatypeAssertion}"></f:ajax>
        </h:commandLink> 
Run Code Online (Sandbox Code Playgroud)

单击"保存"时,我希望能够保存数据并关闭对话框.单击取消时,我只想关闭对话框而不保存.两者saveDatatypeAssertioncloseDatatypeAssertion方法都是占位符.我需要找到一种方法来获取对话框的引用dlg2,然后hide()在其上调用方法.

Fis*_*Gel 6

如果您使用的是JSF 2.0.您可以这样做:

 <h:commandButton value="Save Assertions"  >
  <f:ajax event="click" onevent="dlg2.hide()" listener="#{datatypeAssertionController.saveDatatypeAssertion}" />
 </h:commandButton>

<h:commandLink value="Close" >
      <f:ajax event="click" onevent="dlg2.hide()"  listener="#{datatypeAssertionController.closeDatatypeAssertion}" />
</h:commandLink> 
Run Code Online (Sandbox Code Playgroud)