2011-07-11 98 views
3

我想在对话框中显示复合组件。它可以工作,但是如何从复合组件中关闭对话框。JSF 2.0 Primefaces关闭复合组件中的对话框

<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> 

在我的复合成分:

 <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> 

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

回答

6

如果使用JSF 2.0.You可以这样做:

<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> 
+0

关闭对话框,但听者不叫。 – Sydney

+0

我弄明白了:'' – Sydney

+0

是的,你是对的,我只是犯了一个错误我会编辑我的答案。 – FishGel