2011-07-11 10 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

関連する問題