我有一個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