バックグラウンドで処理しているタスの完了率をJSFページに表示する場合は、ADF FacesのprogressIndicator
コンポーネントとpoll
コンポーネントを併用します。
progressIndicator
コンポーネントは、部分ページ・レンダリングを使用してプログレス・バーにタスクの進行状況を表示します。プログレス・バーは、最初は空の長方形ボックスです。タスクの進行状況が完了に近づくに従って、ADF Facesは一定の間隔でプログレス・バーをレンダリングし、ボックス内を大量のレンガ・マークで埋めることによって、タスクの完了率を視覚的に表示します(下の図を参照)。
ADF Facesでプログレス・バーがレンダリングされる間隔は、poll
コンポーネントのinterval
属性で決まります。progressIndicator
コンポーネントをpoll
コンポーネントにリンクするには、progressIndicator
のpartialTriggers
属性を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出力コンポーネントの概要
バックグラウンド・タスクの進行状況を表示するバーの使用
Copyright © 1997, 2006, Oracle. All rights reserved.