【问题标题】:JSF 2.0 Primefaces close a dialog in a composite componentJSF 2.0 Primefaces 关闭复合组件中的对话框
【发布时间】:2011-10-03 01:29:27
【问题描述】:

我想在对话框中显示一个复合组件。它可以工作,但是如何从复合组件关闭该对话框。

<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() 方法。

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    如果您使用的是 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> 
    

    【讨论】:

    • 对话框关闭,但没有调用监听器。
    • 我把它修好了:&lt;f:ajax event="click" onevent="dlg2.hide()" listener="#{datatypeAssertionController.saveDataValueAssertion}"&gt;&lt;/f:ajax&gt;
    • 是的,你是对的。我只是犯了一个错误。我会编辑我的答案。
    • 但是你可以试试actionListener="#{data*.saveDataValueAssertion()}",它可能有用。我只是忘记了 ()
    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 2016-08-30
    • 2017-06-04
    • 2014-04-08
    • 2012-07-26
    • 1970-01-01
    相关资源
    最近更新 更多