我的一个页面上有一个对话框。它打开很好。如果您使用页面上的按钮,它会正常工作,它会关闭。但是,如果您尝试从对话框中“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>
提前感谢您的帮助。
答案 0 :(得分:4)
您的问题是您不希望使用带有Primefaces按钮的onclick
属性来显示和隐藏对话框。在回发之前可能不会调用click事件,因为这些按钮不是启用Ajax的。
相反,您应该使用oncomplete
属性。这将通知Javascript事件仅在服务器回发发生后执行,这意味着show()
将显示已更新的对话框内容,并且只有在服务器端执行完成后才会发生hide()
。