JSF/Primefaces AJAX页面呈现回调
我的页面布局(带Primefaces)有一个包含所有内容的西、北和中央布局面板。中心布局包括一个iframe,每次选择菜单选项(在西面板上)时,只更新中心内容(使用Ajax) 当页面呈现/加载时,我想在另一个面板上显示“加载gif”。我使用了以下代码: xhtml片段JSF/Primefaces AJAX页面呈现回调,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,我的页面布局(带Primefaces)有一个包含所有内容的西、北和中央布局面板。中心布局包括一个iframe,每次选择菜单选项(在西面板上)时,只更新中心内容(使用Ajax) 当页面呈现/加载时,我想在另一个面板上显示“加载gif”。我使用了以下代码: xhtml片段 <p:ajaxStatus style="width:32px; height:32px;" id="ajaxStatusPanel"> <f:facet name="start">
<p:ajaxStatus style="width:32px; height:32px;" id="ajaxStatusPanel">
<f:facet name="start">
<p:graphicImage value="/resources/img/progress.gif" />
</f:facet>
<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>
但这会短暂地显示加载程序,因为ajax请求一结束它就完成了。但是,页面加载/呈现可能需要更长的时间。有什么方法可以提供“页面呈现”回调吗?当您在
iframe
中实际加载内容时,您可以通过向页面添加一点javascript来解决此问题,尤其是onload
事件处理程序
例如:
<iframe id="navigation" src="#{layout.navigation}" onload="hideDialog()"
style="position: absolute; top: 0px; left: 0px; bottom: 0px; right: 0px; width: 100%; height: 100%; border: none; margin: 0; padding: 0; overflow: hidden; z-index: 999999;">
</iframe>
您可能需要在生成的html+javascript中进行一些搜索,以找到要使用的确切名称/ID(以便获得对该对话框的引用)
<script>
function hideDialog()
{
if(statusDialog != undefined)
statusDialog.hide();
}
</script>