我有一个选项卡视图,每当用户选择该选项卡时,我想在其中刷新一个特定选项卡的内容。我还希望在刷新选项卡时弹出模式对话框。
这是带有 tabChange ajax 事件处理程序的 tabView
<p:dialog widgetVar="statusDialog" modal="true" draggable="false" minimizable="false" appendToBody="true" closable="false" header="Processing..." resizable="false" maximizable="false">
<p:graphicImage library="assets" name="ajax-loader.gif"></p:graphicImage>
</p:dialog>
<p:tabView id="tabview" orientation="top" dynamic="false">
<p:ajax event="tabChange" listener="#{bean.tabChangeListener}"></p:ajax>
<p:tab title="tab1">
<ui:include src="/WEB-INF/views/tab1.xhtml"/>
</p:tab>
<p:tab title="tab2">
<p:remoteCommand actionListener="#{bean.refreshData}" update="someTab2ElementID" name="refresh" global="true" onstart="statusDialog.show()" oncomplete="statusDialog.hide()"/>
<ui:include src="/WEB-INF/views/tab2.xhtml"/>
</p:tab>
</p:tabView>
这是tabChangeListener:
public void tabChangeListener(TabChangeEvent event) {
if ( event.getTab().getId().equalsIgnoreCase("tab2") ) {
RequestContext.getCurrentInstance().execute("refresh()");
}
}
刷新 remoteCommand 正在按预期调用,但我的 statusDialog 从未显示。如果按钮触发了相同的 remoteCommand,则单击 statusDialog 会出现。JavaScript 控制台中没有错误。
为什么在 RequestContext.execute() 触发 remoteCommand 时不显示 statusDialog,我怎样才能让它出现?我什至尝试将 statusDialog.show() 添加到 execute() 但它没有帮助。