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

前
 
次
 

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

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

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

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

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

31.1 ユーザー・カスタマイズの概要

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

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

表31-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

ユーザーがpanelWindowまたはdialogコンポーネントのcontentHeight属性の値を変更する場合、コマンド・コンポーネントの関連するwindowHeightの値も変更され、保持されます。

activeCommandToolbarButton

commandButton

commandImageLink

commandLink

commandMenuItem

commandNavigationItem

commandToolbarButton

windowWidth

ユーザーがpanelWindowまたはdialogコンポーネントのcontentWidth属性の値を変更する場合、コマンド・コンポーネントの関連するwindowWidthの値も変更され、保持されます。

column

displayIndex

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

column

frozen

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

column

noWrap

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

column

selected

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

column

visible

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

column

width

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

table

filterVisible

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

table

first

この属性は、現在の行範囲の最初の行の索引を表し、表示する行範囲の制御に使用されます。この属性の値は、RangeChangeEventに反応して、またスクリーン・リーダー・モードの場合のみ保持されます。


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

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

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

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

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

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

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

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

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

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

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

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

31.2.3 実行時の処理

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

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

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