2013-06-20 49 views
0

我的页面布局(W/Primefaces)具有inclues所有内容的西,北,中心布局面板。中心布局包括一个iframe,每选择一个菜单选项(在西面板上),只有中心内容被更新(使用Ajax)。JSF/Primefaces AJAX页面呈现回调

虽然网页显示/加载我想在其他小组的一个显示“加载GIF”。我用下面的代码:

XHTML段

<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请求结束完成。但是页面加载/渲染可能需要更长时间。有没有提供“页面呈现”回调的方法?

回答

1

由于您实际加载的内容为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> 

上面的代码将导致当iframe内的内容加载完成后所要执行的功能hideDialog()

调用函数(例如hideDialog())可以包含对通过JSF/primefaces生成的对话框的引用,并隐藏。

<script> 
function hideDialog() 
{ 
if(statusDialog != undefined) 
statusDialog.hide(); 
} 
</script> 

您可能需要做一些搜索在生成的HTML + JavaScript来找到确切的名称/ IDS使用(为了获得对对话框的引用)。

+1

真棒解释的感谢! – ChrisGeo