我注意到,有「動態」屬性設置爲「真」在短暫的延遲之後纔會顯示出來(這是可以理解的),也不會觸發幾乎所有的PF分量ajaxstatus ajax開始/停止事件。如何顯示動態Primefaces組件
這是我的(正常使用)的Ajax狀況組件,略去了實際對話內容:
<p:ajaxStatus onstart="statusDialog.show();" onsuccess="statusDialog.hide();" onerror="errorDialog.show();"/>
這是一個動態加載的對話框。它需要從支持bean獲取數據:
<p:dialog modal="true" widgetVar="confDialog" position="center" id="confD" dynamic="true">
<p:panelGrid>
<p:row>
<p:column>
<h:outputText value="Date"></h:outputText>
</p:column>
<p:column>
<h:outputText value="#{myBean.currentDate}">
<f:convertDateTime locale="#{myBean.currentLanguage}" type="both" dateStyle="full" timeStyle="full" timeZone="#{myBean.currentTimeZone}"></f:convertDateTime>
</h:outputText>
</p:column>
</p:row>
</p:panelGrid>
<p:commandButton value="Close" type="button" onclick="confDialog.hide();">
</p:commandButton>
</p:dialog>
,做的東西,並顯示動態加載確認對話框一個命令:
<p:commandButton value="Do it" type="submit" ajax="true" process="@form"
action="#{bean.processForm}"
oncomplete="if(!args.validationFailed){confDialog.show();}"
update="confD @form"/>
而命令按鈕提交數據到後臺bean顯示
阿賈克斯狀態對話框和獲取數據。然後ajax狀態對話框消失,延遲1-2秒,並顯示確認對話框。與動態加載凸片
同樣的情況(在PF TabView的分量)。
爲什麼動態組件負載時不顯示我的AJAX狀態對話框?我如何顯示它?
編輯:
由於@partlov我想出了一個解決方案,而重寫PF功能,通過添加JQ AJAX啓動/停止處理程序,以動態加載的對話框:
jQuery(document).ready(function() {
confDialog.getJQ().ajaxStart(function(){statusDialog.show()});
confDialog.getJQ().ajaxStop(function(){statusDialog.hide()});
});
你在哪裏放了jQuery開始/停止代碼? – Seitaridis 2013-05-23 13:30:43
頁面中的任何位置。然而,也http://stackoverflow.com/questions/16173811/cannot-show-dialog-in-primefaces-requestcontext-execute-call看到如需要加強狀態對話框一切正常 – rootkit 2013-05-24 14:47:50