Prime Faces:如何从页面A导航到(慢)页面B,进度为“正在加载...”指示

时间:2013-02-19 09:45:38

标签: ajax jsf jsf-2

我正在使用Prime Faces(JSF UI库)。

我想从页面A导航到页面B,但由于页面B很慢,因此需要一些进度指示器,因此加载需要时间。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以在第B页上添加AJAX加载来执行此操作。在第B页上,您可以使用以下内容:

<h:head>
  <script type="text/javascript">
    function onLoadCallback(data) {
      if (data.status == "begin") {
        dialogWidget.show();
      } else {
        dialogWidget.hide();
      }
    }
  </script>
</h:head>
<h:body>
  <f:ajax event="load" listener="#{bean.onload}" onevent="onLoadCallback" render=":include1"/>

  <h:panelGroup id="include1">
    <h:panelGroup id="include2" rendered="#{bean.loaded}">
      <ui:include src="realPageB.xhtml"/>
    </h:panelGroup>
  </h:panelGroup>

  <p:dialogid="dialog" widgetVar="dialogWidget" modal="true">
    Loading
  </p:dialog>
</h:body>

有了这个,你最初只用AJAX加载页面(它很快),并且你调用了更新组合实际页面的面板的方法。在加载过程中,您将看到模态对话框(您也可以尝试p:ajaxStatus)。在bean initali中loaded为false,在调用onload方法后,您将loaded更新为true:

private loaded;

// getters and setters

public void onload(AjaxBehaviourEvent event) {
  loaded = true;
}