プログレス・バーについて

バックグラウンドで処理しているタスの完了率をJSFページに表示する場合は、ADF FacesのprogressIndicatorコンポーネントとpollコンポーネントを併用します。

progressIndicatorコンポーネントは、部分ページ・レンダリングを使用してプログレス・バーにタスクの進行状況を表示します。プログレス・バーは、最初は空の長方形ボックスです。タスクの進行状況が完了に近づくに従って、ADF Facesは一定の間隔でプログレス・バーをレンダリングし、ボックス内を大量のレンガ・マークで埋めることによって、タスクの完了率を視覚的に表示します(下の図を参照)。

3分の1がレンガ・マークで埋められた長方形ボックス

ADF Facesでプログレス・バーがレンダリングされる間隔は、pollコンポーネントのinterval属性で決まります。progressIndicatorコンポーネントをpollコンポーネントにリンクするには、progressIndicatorpartialTriggers属性をpollのIDに設定します。

progressIndicatorコンポーネントはデータ・モデルBoundedRangeModelを使用して、タスクの進行状況を管理します。

<af:progressIndicator value="#{progress.progressModel}" />    

valueは、oracle.adf.view.faces.model.BoundedRangeModelタイプのBeanプロパティにバインドされる値です。完了率は、モデルの状態から計算されます。BoundedRangeModelの詳細は、oracle.adf.view.faces.model.BoundedRangeModelのADF FacesのJavadocを参照してください。

ページにprogressIndicatorが最初に表示される場合は、そのモードが不確定である可能性(つまり、BoundedRangeModelからのvalueまたはmaximumが不明な場合)があります。モードが不確定の場合は、時計の針が回転する(時間を刻む)アニメーションが表示されます(次の図を参照)。モードが確定すると(BoundedRangeModelからのvalueまたはmaximumが判明した場合)、針が回転するアニメーションからプログレス・バーに変わります。

時計の文字盤

タスクが完了すると、progressIndicatorコンポーネントによってActionEventがキューイングされ、ADF Facesは、コンポーネントのアクション結果が示すページに移動します。次に例を示します。

<af:poll interval="2000" id="pollid"/>
<af:progressIndicator id="progressid" 
                      action="progressEnd"
                      value="#{progress.progressModel}" 
                      partialTriggers="pollid">
</af:progressIndicator>    

タスクの進行状況が完了に近づくに従ってプログレス・バーの下になんらかのテキストを表示するには、outputFormattedを使用できます。次に例を示します。

<af:panelGroup layout="vertical">
  <af:poll interval="2000" id="pollid"/>
  <af:progressIndicator id="progressid" 
                        action="progressEnd"
                        value="#{progress.progressModel}" 
                        partialTriggers="pollid">
    <af:outputFormatted styleUsage="instruction" 
                        value="Task status is unknown"
                        rendered="#{progress.progressModel.value == -1 or progress.progressModel.value == -1}"/>
    <af:outputFormatted styleUsage="instruction"
                        value="#{progress.progressModel.value} of #{progress.progressModel.maximum} files copied"
                        rendered="#{progress.progressModel.value > -1 and progress.progressModel.value > -1}"/>
  </af:progressIndicator>
</af:panelGroup>    

バッキングBeanには、タスクの進行状況を計算するメソッドと、タスクの取消しと完了を処理するメソッドが含まれています。バッキングBeanコードの詳細な例は、「ADF Facesのデモ・ファイルについて」のProgressIndicatorコンポーネントのデモを参照してください。

ヒント: BoundedRangeModelへのaf:forEachのバインディング使用すると、プログレス・バーの下に進捗状況リストを表示することもできます。詳細は、「進行状況のチェック・リストおよび増加リストについて」を参照してください。


ADF Facesのポーリングについて
ADF Facesでの部分ページ・レンダリングのサポートについて
ADF Faces出力コンポーネントの概要
バックグラウンド・タスクの進行状況を表示するバーの使用