2014-10-17 140 views
0

如何實用地添加「獲取數據」之類的進度信息。當數據被獲取時,我需要在空白頁面上顯示這條消息。我是ADF的新手,所以如果它是非常基本的東西,請原諒我。我無法在網上找到它。進度信息

回答

2

你可以在你的頁面或pagefragment中使用javascript。我的例子使用頁面片段,所以彈出窗口的ID必須包含區域。如果您在查找正確的ID時遇到問題,可以從任何瀏覽器查看它,使用View Source,然後搜索您輸入的名稱(在本例中爲splashPopup)。

<af:resource type="javascript"> 
     function enforcePreventUserInput(evt) { 
      var popup = AdfPage.PAGE.findComponentByAbsoluteId('pt1:r1:0:splashPopup'); 
      if (popup != null) { 
       AdfPage.PAGE.addBusyStateListener(popup, handleBusyState); 
       evt.preventUserInput(); 
      } 
     } 

     function handleBusyState(evt) { 
      var popup = AdfPage.PAGE.findComponentByAbsoluteId('pt1:r1:0:splashPopup'); 
      if (popup != null) { 
       if (evt.isBusy()) { 
        popup.show(); 
       } 
       else if (popup.isPopupVisible()) { 
        popup.hide(); 
        AdfPage.PAGE.removeBusyStateListener(popup, handleBusyState); 
       } 
      } 
     } 
    </af:resource> 

pageFragment內部的彈出窗口。它顯示一個簡單的旋轉圈gif動畫。如果你需要在谷歌上,你可以找到許多其他的動畫。

<af:popup id="p1" contentDelivery="immediate"> 
        <af:dialog id="d2" type="none" closeIconVisible="false" title="Loading"> 
         <af:panelGroupLayout id="pgl5" layout="vertical" halign="center"> 
          <af:image source="/images/loading.gif" shortDesc="Loading data..." id="i1"/> 
         </af:panelGroupLayout> 
        </af:dialog> 
</af:popup> 

現在,我想你會希望在按下按鈕或圖像鏈接後,在長時間運行的查詢或其他長時間運行的過程中顯示彈出窗口。爲此,您必須在組件上定義一個clientListener,它使用上面定義的javascript方法。

<af:commandImageLink text="Test LongRunning Query" id="cil1" icon="/icons/excel.jpg" 
             action="#{myBean.doStuff}" 
         <af:clientListener method="enforcePreventUserInput" type="action"> 
         </af:clientListener> 
</af:commandImageLink> 
1

如果你有一個長時間運行的方法調用,然後你可以調用在頁面加載

<af:serverListener type="onloadEvent" 
         method="#{backingBeanScope.initBean.callMethod}"/> 
<af:clientListener type="load" method="triggerOnLoad"/> 
<af:resource type="javascript"> 
     function triggerOnLoad(event) 
     { 
      AdfCustomEvent.queue(event.getSource(), "onloadEvent", {},false); 
      return true; 
     } 
    </af:resource> 

該方法,然後使用自動進稿器狀態指示燈來顯示頁面上的狀態。

<af:panelStretchLayout id="psl1" startWidth="33%" endWidth="33%" 
            topHeight="33%" bottomHeight="33%"> 
      <f:facet name="bottom"/> 
      <f:facet name="center"> 
      <af:statusIndicator id="si1"/> 
      </f:facet> 
      <f:facet name="start"> 
      <af:panelGroupLayout id="pgl2"/> 
      </f:facet> 
      <f:facet name="end"> 
      <af:panelGroupLayout id="pgl3"/> 
      </f:facet> 
      <f:facet name="top"> 
      <af:panelGroupLayout id="pgl4"/> 
      </f:facet> 
</af:panelStretchLayout> 

請參閱這篇博客來回詳情 Show status indicator for long running method calls - ADF