对话框不会关闭主要表面

时间:2012-09-28 16:44:32

标签: jsf dialog primefaces

我的一个页面上有一个对话框。它打开很好。如果您使用页面上的按钮,它会正常工作,它会关闭。但是,如果您尝试从对话框中“x”,它将无法关闭。我认为这与我在对话框上有输入字段的事实有关,但我不确定。如果这是一个骗局我道歉,我找不到类似的帖子。

        <p:commandButton action="#{phoneListBean.debugger}"
            value="Merge Unqiue" onclick="mdlg.show();"
            update=":pmsg, :createNewPanel, :listform" />

        <p:dialog id="mdialog" header="Merge Unqiue" widgetVar="mdlg"
            appendToBody="true">
            <h:form id="mform">
                <h:panelGrid columns="2" cellpadding="5" id="m">
                    <h:outputLabel for="listName" value="Enter the List Name:" />
                    <p:inputText value="#{phoneListBean.mergeList.name}" id="listName" />


                    <p:commandButton action="#{phoneListBean.mergeUnique}"
                        value="Merge Unqiue" update=":pmsg, :listform"
                        onclick="mdlg.hide();" />
                </h:panelGrid>
            </h:form>

        </p:dialog>

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您的问题是您不希望使用带有Primefaces按钮的onclick属性来显示和隐藏对话框。在回发之前可能不会调用click事件,因为这些按钮不是启用Ajax的。

相反,您应该使用oncomplete属性。这将通知Javascript事件仅在服务器回发发生后执行,这意味着show()将显示已更新的对话框内容,并且只有在服务器端执行完成后才会发生hide()