ヘッダーをスキップ
Oracle Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド
11gリリース1(11.1.1)
B52029-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

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

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

showDetailItempanelAccordionコンポーネントで使用)

flex

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

showDetailItempanelAccordionコンポーネントで使用)

inflexibleHeight

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

panelSplitter

collapsed

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

panelSplitter

splitterPosition

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

richTextEditor

editMode

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

calendar

activeDay

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

calendar

view

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

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に切り替えることができるボタンを作成します。


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

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

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

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

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

  1. アプリケーションのWebプロジェクトをダブルクリックし、「プロジェクト・プロパティ」ダイアログを開きます。左側のツリーで、「ADFビュー」ノードを選択します。

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

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に対してコンポーネントで変更が記録およびリストアされます。このため、フラグメントまたはページ・テンプレートに属するコンポーネントで変更が適用される場合、フラグメントまたはテンプレートを使用するページ範囲にのみ変更が適用され、フラグメントまたはテンプレートを使用するページ全体には適用されません。たとえば、プロジェクトにpageOne.jspxおよびpageTwo.jspx JSFページがあり、showDetailコンポーネントを含むregion.jsffページ・フラグメントで定義されているフラグメントが両方に含まれるとします。pageOne.jspx JSFページがレンダリングされ、showDetailコンポーネントのdisclosed属性が変更されると、暗黙的に属性の変更が記録され、pageOne.jspxページにのみ適用されます。ユーザーがpageTwo.jspxページに移動すると、属性の変更は適用されません。