我有一个tabview,我希望在用户选择该选项卡时刷新一个特定选项卡的内容。我还希望模式对话框在标签刷新时弹出。无法在Primefaces中显示对话框RequestContext.execute()调用
这里是TabView的与tabChange AJAX事件处理
<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控制台中没有错误。
为什么当remoteCommand由RequestContext.execute()触发时,statusDialog不显示?我怎样才能让它显示?我甚至尝试添加statusDialog.show()来执行(),但它没有帮助。
你可以试一下吗?
'? – 2013-04-23 15:58:00
这将导致statusDialog在所有选项卡更改中显示。我只希望在选择一个特定标签时显示它。 – rootkit 2013-04-23 16:18:57