我注意到,有“动态”属性设置为“真”在短暂的延迟之后才会显示出来(这是可以理解的),也不会触发几乎所有的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