ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド
11g リリース2(11.1.2.4.0)
B66719-05
  目次へ移動
目次

前
 
次
 

32 JSFページでのユーザー・カスタマイズの許可

この章では、実行時に特定のUIにユーザーが行った変更をセッションの間永続させる方法について説明します。

また、変更が永続データ・リポジトリ内で永続されるようにアプリケーションを構成することもできます。そのように構成することで、アプリケーションを再度使用するときに変更内容が残っていることになります。この永続性を許可するには、完全Fusionテクノロジ・スタックの一部であるOracle Metadata Service(MDS)を使用する必要があります。MDSおよび完全Fusionスタックを使用することで、次の追加の永続性機能も提供されます。

Oracle MDSを使用するための詳細および手順は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「実行時のユーザー・カスタマイズの許可」の章を参照してください。

この章では、次の項目について説明します。

32.1 ユーザー・カスタマイズについて

多くのADF Facesコンポーネントで、ユーザーは実行時にコンポーネントの表示を変更できます。たとえば、ユーザーは、panelSplitterコンポーネントのスプリッタの位置を変更したり、パネルに詳細コンテンツを表示するかどうかを変更できます。デフォルトでは、これらの変更はページ・リクエストの間有効です。ユーザーがページを終了して再度表示すると、コンポーネントはデフォルトの構成で表示されます。ただし、変更がユーザーのセッションの間永続するようアプリケーションを構成できます。このようにすると、ユーザーがアプリケーションを終了するまで、変更されたままになります。

表32-1に、デフォルトのパーソナライズ機能を提供するコンポーネントごとの変更を示します。

表32-1 暗黙的に永続する属性値

コンポーネント 属性 実行時の効果

panelBox

showDetail

showDetailHeader

showDetailItem

disclosed

ユーザーは、ヘッダーのアイコンを使用してコンテンツを表示または非表示にできます。ユーザーの直近のアクションに基づいて、詳細コンテンツが表示または非表示になります。

showDetailItem(panelAccordionコンポーネントで使用)

flex

複数のshowDetailItemコンポーネントの高さは、それぞれのflex属性の相対値によって決まります。大きいflex値が設定されているshowDetailItemコンポーネントは、小さい値が設定されているコンポーネントよりも高くなります。これらの比率を変更でき、新しい値は永続します。

showDetailItem(panelAccordionコンポーネントで使用)

inflexibleHeight

ユーザーはパネルのサイズを変更でき、そのサイズは保持されます。

panelSplitter

collapsed

ユーザーはスプリッタのいずれかの面を閉じることができます。閉じられた状態は、ユーザーによる最終の構成として保持されます。

panelSplitter

splitterPosition

パネルのスプリッタの位置が、ユーザーによって最後に移動された位置のままになります。

richTextEditor

editMode

エディタは、ユーザーが最後に選択したモード(WYSIWYGまたはソース)で表示されます。

calendar

activeDay

現在の表示でアクティブとみなされる日は、アクティブな日のままになります。

calendar

view

現在アクティビティを表示しているビュー(日、週、月またはリスト)が保持されます。

panelWindow

dialog

contentHeight

ユーザーは、panelWindowまたはdialogポップアップ・コンポーネントの高さを変更でき、その高さは保持されます。

panelWindow

dialog

contentWidth

ユーザーは、panelWindowまたはdialogポップアップ・コンポーネントの幅を変更でき、その幅は保持されます。

activeCommandToolbarButton

commandButton

commandImageLink

commandLink

commandMenuItem

commandNavigationItem

commandToolbarButton

windowHeight

インライン・ポップアップ・ダイアログがADF Facesダイアトグ・フレームワークまたはADFタスクフローを使用して起動された場合、ユーザーが手動でダイアログのサイズを変更すると、ダイアログを起動したコマンド・コンポーネント上の関連のwindowHeight値も変更され、保持されます。この機能は、インライン・ダイアログにのみ適用され、ブラウザ・ウィンドウ・ダイアログには適用されません。

activeCommandToolbarButton

commandButton

commandImageLink

commandLink

commandMenuItem

commandNavigationItem

commandToolbarButton

windowWidth

インライン・ポップアップ・ダイアログがADF Facesダイアトグ・フレームワークまたはADFタスクフローを使用して起動された場合、ユーザーが手動でダイアログのサイズを変更すると、ダイアログを起動したコマンド・コンポーネント上の関連のwindowWidth値も変更され、保持されます。この機能は、インライン・ダイアログにのみ適用され、ブラウザ・ウィンドウ・ダイアログには適用されません。

column

displayIndex

ADF Facesの列は、ユーザーが実行時に並べ替えることができます。displayIndex属性によって、列の順序が決まります。(デフォルトでは、各列の値は-1に設定され、データ・ソースと同じ順序で列が表示されます)。ユーザーが列を移動すると、新しい順序を反映するよう各列の値が変更されます。これらの新しい値は永続します。

column

frozen

ADF Facesの列は、スクロールされないように固定できます。列のfrozen属性をtrueに設定すると、その列の前のすべての列(displayIndex値に基づく)がスクロールしません。panelCollectionコンポーネントで表を使用する場合、ユーザーが列を固定できるボタンが表示されるようにその表を構成できます。詳細は、12.3.4項「ページへの表の表示方法」を参照してください。

column

noWrap

列のコンテンツを折り返すかどうかを指定します。ユーザーがこの属性値を変更できるようにするコードを作成する必要があります。たとえば、ユーザーが値をtrueからfalseに切り替えることができるポップアップ・メニューを作成します。

column

selected

選択された列は、ユーザーが最後に選択した列に基づきます。

column

visible

ユーザーの直近のアクションに基づいて、列が表示または非表示になります。ユーザーがこの属性値を変更できるようにするコードを記述する必要があります。たとえば、ユーザーが値をtrueからfalseに切り替えることができるポップアップ・メニューを作成します。

column

width

列の幅が、ユーザーが最後に設定したサイズのままになります。

table

filterVisible

ADF Facesの表には、ユーザーが属性値で表の行をフィルタ処理できるコンポーネントを含めることができます。フィルタを使用するよう構成されている表では、ユーザーの直近のアクションに基づいて、フィルタは表示または非表示になります。ユーザーがこの属性値を変更できるようにするコードを記述する必要があります。たとえば、ユーザーが値をtrueからfalseに切り替えることができるボタンを作成します。

dvt:areaGraph

dvt:barGraph

dvt:bubbleGraph

dvt:comboGraph

dvt:horizontal
BarGraph

dvt:lineGraph

dvt:scatterGraph

timeRangeMode

グラフの時間軸上に表示されるデータの時間範囲は、すべてのデータ視覚化グラフ・コンポーネントに指定できます。デフォルトでは、すべてのデータが表示されます。時間範囲は、最後または最初のデータ・ポイントからの相対的時間範囲、または明示的時間範囲にも設定できます。ユーザーがこの属性値を変更できるようにするコードを記述する必要があります。たとえば、グラフの時間範囲を選択するためのドロップダウン・リストを作成できます。

dvt:ganttLegend

visible

データ視覚化プロジェクトの凡例、リソース使用率およびスケジュール・ガント・チャート・コンポーネントは、情報パネル内で表示されるかされないかのいずれかです。ユーザーがこの属性値を変更できるように(汎用を表示するための非表示および表示のボタン)コードを記述することが必要になります。

dvt:hierarchyViewer

layout

データ視覚化階層ビューア・コンポーネントでは、上から下への垂直、ツリー、円、放射など、9つの階層レイアウト・オプションをサポートしています。ユーザーは、マップ・コントロール・パネルでレイアウトを変更でき、最後に選択されたレイアウトが保持されます。

dvt:map

mapZoom

このデータ視覚化地理マップ・コンポーネント属性では、マップの初期ズーム・レベルを指定します。ズーム・レベルは、ベース・マップの一部としてマップ・キャッシュ・インスタンスで定義されます。ユーザーがこの属性値を変更できるようにするコードを記述する必要があります。

dvt:map

srid

このデータ視覚化地理マップコンポーネント属性では、startingXおよびstartingYによって定義されるマップの中心位置や、点テーマのすべての点を含む、マップの全座標のsrid(空間参照ID)を指定します。ユーザーがこの属性値を変更できるようにするコードを記述する必要があります。

dvt:map

startingXstartingY

このデータ視覚化地理マップ・コンポーネント属性では、マップの中心位置のXおよびY座標を指定します。座標のsridはsrid属性で指定します。srid属性が指定されていない場合、その値はマップの中心位置の経度であると想定されます。ユーザーがこの属性値を変更できるようにするコードを記述する必要があります。

dvt:projectGantt

dvt:resource
UtilizationGantt

dvt:schedulingGantt

splitterPosition

パネルのスプリッタの位置が、ユーザーによって最後に移動された位置のままになります。

dvt:timeAxis

scale

プロジェクト、リソース使用率およびスケジュールのガント・チャートのデータ視覚化コンポーネントでは、ガント・チャートの主時間軸および副時間軸の指定にこのファセットを使用します。タイム・スケール(twoyearsyearhalfyearsquarterstwomonthsmonthsweekstwoweeksdayssixhoursthreehourshourshalfhoursquarterhours)は、ユーザーがメニュー・バーの「表示」メニューを使用することで設定でき、その選択は保持されます。このコンポーネント値には、カスタム・タイム・スケールも指定できます。

dvt:timeSelector

explicitStartexplicitEnd

データ視覚化の面、棒、コンボ、折れ線、散布およびバブルの各グラフ・コンポーネントでは、この子タグ属性を使用して、タイム・セレクタの開始および終了日付を明示的に指定します。この属性では、値バインディングのみがサポートされています。ユーザーがこの属性値を変更できるようにするコードを記述する必要があります。


32.1.1 ユーザー・カスタマイズのユースケースおよび例

アプリケーションは、表32-1に示した属性の値をユーザー・セッション中ずっと保持できるように構成できます。たとえば、アプリケーションに表が含まれており、ユーザーが列の幅をコンテンツが1行ですべて表示されるように調整するとします。セッションの変更永続性を使用するようにアプリケーションを構成すると、ユーザーがそのページから去り、次に戻ったときに、列の幅は以前の設定のままで開かれます。


注意:

追加機能の場合、変更が永続データ・リポジトリで保持されるようにアプリケーションを構成でき、その結果、変更はそのユーザーに対して複数のセッションにわたり持続します。この永続的な持続性を可能にするには、フルFusionテクノロジ・スタックを使用する必要があります。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「実行時のユーザー・カスタマイズの許可」の章を参照してください。


32.2 セッション変更永続性の実装

ユーザーによるセッションへの変更をアプリケーションで永続させるには、カスタマイズが有効になるようプロジェクトを構成する必要があります。


注意:

MDSでは、カスタマイズするにはページがXMLベースであることが必要です。したがって、.jspファイルではカスタマイズは許可されず、かわりに.jspxファイルを使用します。

さらに、Faceletファイルには、カスタマイズを可能にするために拡張子.jsfを付ける必要があります。MDSではこの拡張子を使用して、そのファイルをFaceletsファイルとして認識します。


32.2.1 セッション変更永続性の実装方法

web.xmlファイルでのカスタマイズが有効になるようアプリケーションを構成します。

セッション変更永続性を実装する手順:

  1. アプリケーション・ナビゲータで、Webプロジェクトをダブルクリックします。

  2. 「プロジェクト・プロパティ」ダイアログで、「ADFビュー」ノードを選択します。

  3. 「ADFビュー」ページで、「ユーザー・カスタマイズの有効化」チェック・ボックスをアクティブにし、「セッションの継続時間」ラジオ・ボタンを選択して、「OK」をクリックします

32.2.2 変更永続性を使用するようアプリケーションを構成する場合の処理

セッションへの変更を保存するよう選択すると、JDeveloperでCHANGE_PERSISTENCEコンテキスト・パラメータがweb.xmlファイルに追加され、値がsessionに設定されます。このコンテキスト・パラメータでは、永続性の処理に使用されるChangeManagerクラスが登録されます。例32-1に、web.xmlファイルのコンテキスト・パラメータを示します。

例32-1 変更の永続に使用されるweb.xmlのコンテキスト・パラメータ

<context-param>
  <param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
  <param-value>session</param-value>
</context-param>

32.2.3 実行時の処理: 変更をどのように永続させるか

セッションへの変更を永続させるようアプリケーションを構成している場合、ビューIDに従って索引付けされたデータ構造内のセッション変数に変更が記録されます。後続の表示またはビューのリストア・フェーズでページがリクエストされるたびに、指定されたコンポーネントに対する変更がタグ・アクション・クラスで検索され、追加されたときと同じ順序で変更が適用されます。つまり、セッションの間に登録された変更は、同じセッションの後続のリクエストでのみ適用されます。

32.2.4 テンプレートおよび領域での変更永続性の使用について

セッション永続性を使用すると、変更は特定のセッションのviewIdに対して、コンポーネントで記録されリストアされます。その結果、その変更がフラグメントまたはページのテンプレートに属するコンポーネントで適用されると、ページでそのフラグメントまたはテンプレートが使用される範囲でのみ適用されます。そのフラグメントまたはテンプレートが使用されるすべてのページに及ぶわけではありません。たとえば、プロジェクトにpageOne.jspxおよびpageTwo.jspx JSFページがあり、どちらにもregion.jsffページ・フラグメントで定義されているフラグメントが含まれていて、さらにはshowDetailコンポーネントが含まれているとします。pageOne.jspx JSFページがレンダリングされ、showDetailコンポーネント上のdisclosed属性が変更されると、暗黙的な属性変更が記録され、pageOne.jspxページに対してのみ適用されます。ユーザーがpageTwo.jspxページに移動した場合、属性の変更は適用されません。