23 Oracle Composerの拡張
この章の内容は次のとおりです。
コンポーネントへのカスタム・アクションの追加
ポータルのコンポーネントを編集する際にユーザーが使用できる組込みアクションを増やすために、カスタム・アクションをコンポーネントに追加できます。
コンポーネントに追加できるカスタム・アクションには3つのタイプがあります。
-
Javaベースのカスタム・アクション: どのコンポーネントに対しても機能するため、最も柔軟性のある選択肢であり、ビジネス・ロジックを実装できます。次を参照してください。
-
IDドリブンのカスタム・アクション。次を参照してください。
-
タスク・フロー・アクション・ドリブンのカスタム・アクション: タスク・フロー・コンポーネント専用で、アクションはタスク・フローのナビゲーションです。次を参照してください。
デザイン・ビューでのShow Detail FrameコンポーネントへのJavaベースのカスタム・アクションの追加
コンポーザのデザイン・ビューで、Show Detail Frame
コンポーネントのクロームに、「アクション」メニューに表示されるカスタム・アクションを追加できます。このカスタム・アクションは、インタフェースCustomActionListener
を実装するJavaクラスです。アクションがメニューから選択されると、メソッドprocessAction
により、(ダイアログを開くなど)指示された操作がコンポーネントに対して実行されます。
コンポーザのデザイン・ビューでShow Detail Frame
コンポーネントにカスタム・アクションを追加するには:
選択ビューでのコンポーネントへのJavaベースの直接選択カスタム・アクションの追加
コンポーザの選択ビューでコンポーネントを選択すると、ポップアップ・メニューに表示される直接選択カスタム・アクションをコンポーネントに追加できます。このカスタム・アクションは、インタフェースSelectActionListener
を実装するJavaクラスです。アクションがメニューから選択されると、メソッドprocessAction
により、(ダイアログを開くなど)指示された操作がコンポーネントに対して実行されます。
コンポーザの選択ビューでコンポーネントに直接選択カスタム・アクションを追加するには:
ファセットを使用したShow Detail Frameコンポーネントへのカスタム・アクションの追加
Show Detail Frame
コンポーネントのファセットを使用して、Show Detail Frame
コンポーネントのカスタム・アクションを定義して表示できます。たとえば、アプリケーションが提供するサービスのリストがShow Detail Frame
に含まれている場合、様々なサービスの詳細を含むタスク・フローを開くカスタム・アクション(Show Detailed Information
)を追加できます。
Oracle JDeveloperでは、「構造」ウィンドウにShow Detail Frame
コンポーネントで使用可能なファセットがすべて表示されますが、UIコンポーネントを含むファセットのみがアクティブで表示されます。
Show Detail Frame
ファセットを追加するには:
例: ファセットを使用したShow Detail Frameコンポーネントへのカスタム・アクションの追加
Panel Customizable
コンポーネントを指定したJSFページ(Page1.jspx
)を前提とします。Panel Customizable
内にShow Detail Frame
コンポーネント(showDetailFrame1
)があります。Show Detail Frame
内にADFタスク・フローがあります。Panel Customizable
には、他に2つのShow Detail Frame
コンポーネントがあり、一方はshowDetailFrame1
の上、他方は下にあります。タスク・フローは、2つのOutput Text
コンポーネントをページに表示します。
Additional Actions
ファセットをShow Detail Frame
コンポーネントで構成して、「処理」メニューに「上へ移動」アクションと「下へ移動」アクションとともに「カスタマイズ」アクションを表示できます。実行時、「カスタマイズ」アクションを使用すると、ユーザーはOutput Text
コンポーネントのテキストをカスタマイズできます。この項では、この結果を得るためのステップを説明します。次のサブセクションが含まれます:
タスク・フローへのカスタム・アクションの追加
タスク・フローをShow Detail Frame
コンポーネントに含めることによって、これをカスタマイズできます。Show Detail Frame
コンポーネントには、コンポーネントを再配置、表示または非表示にする特定のデフォルトのアクションが用意されています。さらに、カスタム・アクションを定義して、実行時にタスク・フロー内で目的のナビゲーション・フローをトリガーできます。タスク・フローでカスタム・アクションを有効にできる方法は2つあります。
-
タスク・フローでカスタム・アクションを直接有効にして、カスタム・アクションが
Show Detail Frame
コンポーネントの「アクション」メニューに表示されるようにします。 -
タスク・フローを囲んでいる
Show Detail Frame
コンポーネントでカスタム・アクションを有効にして、カスタム・アクションがShow Detail Frame
コンポーネントの「アクション」メニューに表示されるようにします。
この項では、両方の方法について説明します。次のサブセクションが含まれます:
タスク・フローでのカスタム・アクションの直接追加
タスク・フローを自己完結にし、アプリケーション・レベルで定義されたグローバル・カスタム・アクションを継承する必要がない場合、この項のステップを実行します。ネストされた<customActions>
要素を持つ<customComps-config>
セクションをadf-settings.xml
ファイルで構成することによって、タスク・フローでカスタム・アクションを定義できます。adf-settings.xml
ファイルで指定された追加カスタム・アクションは、このタスク・フローを囲むShow Detail Frame
コンポーネントに表示されます。
通常、タスク・フローはパッケージ化されADFライブラリとしてデプロイされます。タスク・フローのカスタム・アクションを含むadf-settings.xml
ファイルを作成すると、このファイルもADFライブラリでパッケージ化されます。
タスク・フローでカスタム・アクションを有効にするには:
-
adf-settings.xml
ファイルが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_ROOT
/Portal/src/META-INF
ディレクトリ)の下のMETA-INF
ディレクトリに作成します。-
「file」メニューから、「新」を選択します。
-
「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。
-
「OK」をクリックします。
ファイルに
adf-settings.xml
という名前を付けます。 -
-
ファイルで
<custComps-config>
セクションをネストされた<customActions>
要素とともに追加します。 -
Show Detail Frame
の「処理」メニューにカスタム・アクションとして表示する内部タスク・フローのアクションそれぞれに<customAction>
要素を1つ追加します。<customActions>
要素の下に任意の数のカスタム・アクションを追加できます。次の例に、
<customAction>
エントリが指定されたadf-settings.xml
ファイルのコードを示します。<cust:custComps-config xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <customActions> <customAction action="next" location="chrome" rendered="true" icon="/adf/webcenter/editheader_ena.png" text="Next" taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition" shortDesc="next"/> <customAction action="prev" location="chrome" rendered="true" icon="/adf/webcenter/editheader_ena.png" text="Previous" taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition" shortDesc="prev"/> </customActions> </cust:custComps-config>
カスタム・アクションの定義は、タスク・フロー・レベルの設定で使用する
taskFlowId
属性を除いて、タスク・フロー・レベルとアプリケーション・レベルで似ています。この属性は、カスタム・アクションを定義する必要があるタスク・フローを識別するために使用されます。ADFライブラリには複数のタスク・フローが存在する場合があるため、カスタム・アクションをレンダリングする必要があるタスク・フローを識別する際にこの属性は役に立ちます。ノート:
-
カスタム・アクションのアイコンを定義する場合、指定するイメージがプロジェクト・ルート・フォルダで利用できることを確認する必要があります。
-
ページのすべてのタスク・フローで定義された内部アクションのカスタム・アクションを定義できますが、実行時、
Show Detail Frame
は、タスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみを表示します。
-
-
adf-settings.xml
ファイルを保存します。
タスク・フローを囲んでいるShow Detail Frameでのカスタム・アクションの追加
囲んでいるShow Detail Frame
コンポーネントでタスク・フローのカスタム・アクションを定義できます。これらのアクションが実行時に起動されると、タスク・フローで目的のナビゲーション・フローがトリガーされます。たとえば、ターゲットのタスク・フロー・フラグメントがShow Detail Frame
内ではなく別個のブラウザ・ウィンドウで開くことを指定するShow Detail Frame
でカスタム・アクションを定義できます。
Custom Action
コンポーネントをページのShow Detail Frame
コンポーネントの子として追加することによって、Show Detail Frame
コンポーネントでカスタム・アクションを指定できます。この方法で定義されたカスタム・アクションは、このカスタム・アクションを子として持っているShow Detail Frame
インスタンスでのみ使用できます。または、アプリケーションのadf-config.xmlファイル
でカスタム・アクションを指定できます。この方法で定義されたカスタム・アクションは、アプリケーションのすべてのShow Detail Frame
インスタンスで使用できます。
この項では、Show Detail Frame
でのカスタム・アクションの定義について説明します。次のサブセクションが含まれます:
インスタンス・レベルでのカスタム・アクションの定義
Custom Action
コンポーネントを使用して特定のShow Detail Frame
コンポーネントのインスタンスでカスタム・アクションを定義します。Custom Action
コンポーネントはコンポーザ・タグ・ライブラリにあります。カスタム・アクションは、Show Detail Frame
を含むページのJSFページ定義ファイルに格納されます。
インスタンス・レベルでカスタム・アクションを定義するには:
実行時、Show Detail Frame
の「処理」メニューから処理を選択すると、関連する制御フロー・ルールがトリガーされ、ターゲットのタスク・フロー・フラグメントがレンダリングされます。
グローバル・レベルでのカスタム・アクションの定義
グローバル・レベルでカスタム・アクションを定義することは、そのカスタム・アクションをアプリケーションのすべてのShow Detail Frame
インスタンスで使用可能にすることを意味します。グローバル・レベルのカスタム・アクションはアプリケーションのすべてのShow Detail Frame
コンポーネントで使用可能ですが、実行時にShow Detail Frame
のヘッダーにはタスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみが表示されます。
グローバル・レベルのカスタム・アクションは、アプリケーションのadf-config.xml
ファイルで定義します。
グローバル・レベルでカスタム・アクションを定義するには:
カスタム・アクションの定義の詳細は、「例: タスク・フローを囲んでいるShow Detail Frameへのカスタム・アクションの追加」を参照してください。
グローバル・レベルのカスタム・アクションとインスタンス・レベルのカスタム・アクションの間の競合の解決
各カスタム・アクションは、そのaction
属性の値によって一意に識別されます。グローバル・レベルとインスタンス・レベルで同じaction
属性値を持つカスタム・アクションを定義した場合、他の属性値に応じて実行時にこれらのカスタム・アクションがどのように起動されるか関して競合が発生する場合があります。このような場合、Show Detail Frame
のinheritGlobalActions
属性が他のカスタム・アクション属性(action
属性以外)の動作を次のように定義します。
ノート:
Show Detail Frame
コンポーネントのinheritGlobalActions
設定(true
またはfalse
)に関係なく次のようになります。
-
rendered
属性は、インスタンス・レベルで指定されていなくても継承されません。 -
グローバル・レベルまたはインスタンス・レベルの
location
属性は、グローバル・レベルとインスタンス・レベルの両方で同じ値に設定する必要があります。
-
inheritGlobalActions=true
またはinheritGlobalActions
(デフォルトはfalse
)の値を指定しなかった場合、カスタム・アクション属性の動作は次のようになります。-
グローバル・レベルとインスタンス・レベルでカスタム・アクション属性を定義した場合、インスタンス・レベルで指定した属性値が使用されます。
-
カスタム・アクション属性をインスタンス・レベルでのみ定義した場合、その属性値が使用されます。
-
カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値は無視され、デフォルト値が使用されます。
-
-
inheritGlobalActions=true
の場合、カスタム・アクション属性の動作は次のようになります。-
カスタム・アクション属性をインスタンス・レベルで定義した場合、同じ属性がグローバル・レベルで指定されているかどうかにかかわらず、その値が使用されます。
-
カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値が使用されます。
-
カスタム・アクション属性をグローバル・レベルでもインスタンス・レベルでも定義しなかった場合、属性のデフォルト値が使用されます。
-
アプリケーション・ページを設計した後、アプリケーションを本番環境にデプロイする必要があります。詳細は、???を参照してください。
ノート:
開発環境のページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。
別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するカスタム・アクションの構成
カスタム・アクションは通常、ターゲットのタスク・フロー・ビューをShow Detail Frame
コンポーネント内の所定の場所に表示します。ただし、カスタム・アクションを定義して、別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示できます。
別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するには、そのビューに対応するカスタム・アクションのタスク・フロー定義ファイルおよびaction
属性において、そのビューの制御フロー・ルールに接頭辞dialog:
を付ける必要があります。次の例にaction
属性の定義を示します。
<cust:customAction action="dialog:Next" id="ca1" location="both" icon="/move_forward.png" text="Next Action" shortDesc="Next Action"/>
ポップアップ・ウィンドウでのプロパティの設定
タスク・フロー・リージョン内のコマンド・コンポーネントに対して、useWindow
、windowEmbedStyle
、windowHeight
、windowWidth
およびreturnListener
の各属性を使用して、デフォルトの動作を指定できます。コマンド・コンポーネントは、使用できるこのような属性が他にも存在する場合があります。戻りリスナーを指定した場合、ダイアログを閉じるときに特定アクション・イベントがコールされ、次のナビゲーションの結果が決定されます。デフォルトでは、この設定がないと、ダミーのRich Command Link
コンポーネントが作成され、タスク・フロー・アクションをトリガーします。
コマンド・コンポーネントでリスナーを定義する場合、カスタム・アクションを構成してこのコンポーネントのアクション・イベントをコールする必要もあります。カスタム・アクション定義(グローバル・レベルとインスタンス・レベル)のactionComponent
属性では、アクション・イベントのキューに入る必要があるコマンド・コンポーネントのIDを指定できます。actionComponent
属性が指定された場合、Show Detail Frame
コンポーネントは、このコンポーネントのアクション・イベントをキューに入れます。このコマンド・コンポーネントはタスク・フロー内部にあるため、いつでもその属性値を変更できます。
例
タスク・フローをShow Detail Frame
コンポーネント内に含め、このタスク・フローのナビゲーションの結果に対応するSimple Edit
カスタム・アクションを定義した例について考えてみます。タスク・フロー内のCommand Button
コンポーネントは、Simple Edit
カスタム・アクションをクリックすると300x200
のサイズのモード付きインライン・ポップアップを起動するように構成されています。戻りリスナーは、ポップアップが閉じると必ずコールされるようにコマンド・コンポーネントで構成されています。
リージョン内のCommand Button
コンポーネントのソース・コードは次のとおりです。
<af:commandButton text="dialog:simpleEditPoup" id="SDFCustomActionCmd_simpleEditPoup" action="dialog:simpleEditPoup" useWindow="true" windowEmbedStyle="inlineDocument" windowWidth="300" windowHeight="200" windowModalityType="applicationModal" returnListener="#{pageFlowScope.recentPagesBean.refreshMainView}" visible="false"/>
次の例では、adf-config.xml
ファイルでカスタム・アクションを定義して、タスク・フローの結果に対応するグローバル・カスタム・アクションを指定する方法を示します。Command Button
コンポーネントのIDは、カスタム・アクションのactionComponent
属性に対して指定されます。
<customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <enableSecurity value="true"/> <customActions> <customAction action="dialog:simpleEditPoup" text="Simple Edit" shortDesc="Simple Edit" location="menu" rendered="#{!changeModeBean.inEditMode}" icon="/adf/pe/images/editproperties_ena.png" actionComponent="SDFCustomActionCmd_simpleEditPoup"/> </customActions> </customizableComponentsSecurity>
次の例では、コンポーザ・タグ・ライブラリからJSFページにCustom Action
コンポーネントを追加して、タスク・フローの結果に対応するインスタンス・レベルのカスタム・アクションを指定する方法を示します。Command Button
コンポーネントのIDは、カスタム・アクションのactionComponent
属性に対して指定されます。
<cust:showDetailFrame id="sdf_for_RecentPagesTF1" text="Recent Pages" stretchContent="false" showResizer="never"> <af:region id="RecentPagesTF1" value="#{bindings.regionBinding1.regionModel}"/> <cust:customAction action="dialog:simpleEditPoup" text="My Simple Edit" shortDesc="Simple Edit" location="menu" rendered="#{!changeModeBean.inEditMode}" icon="/adf/pe/images/editproperties_ena.png" actionComponent="SDFCustomActionCmd_simpleEditPoup"/> </cust:showDetailFrame>
ノート:
ポップアップ・ダイアログで起動されるカスタム・アクションは、新しいリクエストとしてサーバーに送信されます。コンポーザのサンドボックスを使用していて、ページ編集モードで操作している場合、このリクエストはコードをサーブレット・フィルタに追加することによって表示モードで起動されるため、新しいサンドボックスはこのページに対して作成されません。
実行時の処理内容
adf-settings.xml
ファイルで構成したカスタム・アクションは、adf-config.xml
ファイルで構成したカスタム・アクションとマージされ、選択したタスク・フローの現在のビューと関係のあるすべてのアクションが親のShow Detail Frame
コンポーネントの「アクション」メニューに表示されます。
グローバル・レベルでカスタム・アクションを有効にした場合、これらのカスタム・アクションが子のタスク・フローの現在のビューのナビゲーション結果に対応する場合、Show Detail Frame
のヘッダーにこれらのカスタム・アクションが表示されます。
action
属性値に接頭辞dialog:
を付けると、タスク・フローのターゲット・ビューが別個のブラウザ・ウィンドウに開きます。
例: タスク・フローを囲んでいるShow Detail Frameへのカスタム・アクションの追加
この例では、アプリケーションにタスク・フロー(customactions
)が含まれていて、Show Detail Frame
内にあるものとします。このタスク・フローには、3つのビュー要素(view_gadget
、edit_settings
およびabout_gadget
)と3つの関連制御フロー・ルール(ViewGadget
、EditSettings
およびAboutGadget
)が含まれています。目的は、カスタム・アクションを定義して、制御フロー・ルールをShow Detail Frame
コンポーネントの「アクション」メニューのアクションとして使用できるようにすることです。
この例では、制御フロー・ルールは、ユーザーが3つのビュー間をナビゲートして行き来できるように追加されています。各ビュー要素には、同じ名前の関連ページ・フラグメントがあります。
-
view_gadget.jsff
フラグメントには、Panel Stretch Layout
コンポーネントがあります。このコンポーネントのcenterファセットには、Value
属性がView Gadget
に設定されているActive Output Text
コンポーネントが移入されます。 -
edit_settings.jsff
フラグメントには、Panel Stretch Layout
コンポーネントがあります。このコンポーネントのcenterファセットには、Value
属性がEdit Gadget Settings
に設定されているActive Output Text
コンポーネントが移入されます。 -
about_gadget.jsff
フラグメントには、Panel Stretch Layout
コンポーネントがあります。このコンポーネントのcenterファセットには、Value
属性がAbout This Gadget
に設定されているActive Output Text
コンポーネントが移入されます。
タスク・フローでカスタム・アクションを有効にするには:
-
customactions
タスク・フローをカスタマイズ可能ページ(MyPage.jspx
)のShow Detail Frame
コンポーネント内に配置します。カスタマイズ可能ページの作成の詳細は、???を参照してください。
-
Custom Action
コンポーネントをコンポーザ・タグ・ライブラリからShow Detail Frame
コンポーネントの子として追加し、Action
属性およびText
属性をそれぞれViewGadget
およびView Gadget
に設定します。 -
さらに2つの
Custom Action
コンポーネントをShow Detail Frame
に追加します。-
最初のコンポーネントの
Action
属性およびText
属性をそれぞれEditSettings
およびEdit Settings
に設定します。 -
2番目のコンポーネントの
Action
属性およびText
属性をそれぞれAboutGadget
およびAbout Gadget
に設定します。
-
-
MyPage.jspx
を保存して実行します。view_gadget
ページ・フラグメントは、ページの(My Gadgetという名前の)Show Detail Frame
コンポーネントにレンダリングされます。「アクション」メニューには、「About Gadget」オプションおよび「Edit Settings」オプションが表示されます。「About Gadget」をクリックして、about_gadget
フラグメントにナビゲートします。「アクション」メニューに、他の2つのフラグメントのナビゲーション・ルールが表示されていることに注意してください(図23-5)。
この実際の動作を確認するには、Oracle Technology Network (OTN)のOracle WebCenter Suite 11gのデモとサンプルのページにある、Composer Custom Actionsサンプル・アプリケーションComposerCustomActions.jws
をご覧ください。
コンポーネント・ナビゲータ内のタスク・フローに表示されるカスタム・アクションの追加
コンポーザの「構造」ビューのコンポーネント・ナビゲータには、図23-6に示すように、タスク・フローにズーム・インして、そのページまたはフラグメント上のコンポーネントを表示するオプションが用意されています。
ユーザーは、ズーム・インし、ページまたはフラグメントを編集し、タスク・フローからズーム・アウトしてそのタスク・フローを含むページにナビゲートして戻ることができます。タスク・フロー名の隣に表示される「タスク・フローの編集」リンクおよび「閉じる」リンクに加えて、図23-7に示すように、タスク・フロー名の隣にカスタム・アクションも表示するようにアプリケーションを構成できます。
この項では、コンポーネント・ナビゲータでタスク・フローのカスタム・アクションを有効にする手順を説明します。内容は次のとおりです。
コンポーネント・ナビゲータでカスタム・アクションを構成する方法
コンポーネント・ナビゲータでタスク・フローに対するカスタム・アクションを表示するには、カスタム・アクションの動作を定義するJava Beanを作成し、このBeanをタスク・フローを含むアプリケーション・ページからコールする必要があります。この項では、これを行うステップを詳細に説明します。次のサブセクションが含まれます:
カスタム・アクションのロジックの定義
まず、ユーザーに提供するカスタム・アクションを決定し、ユーザーがそのカスタム・アクションを選択したときに実装されるロジックを含むJava Beanを作成する必要があります。この項では、カスタム・アクションをクリックするとユーザーにメッセージを表示する単純なロジックを実装するステップを説明します。サンプルのBeanには、カスタム・リンクとともに「閉じる」リンクと「タスク・フローの編集」リンクを表示するコードも含まれています。
Java Beanを作成するには:
カスタム・アクションを含むJSFページの作成
この項では、コンポーザでユーザーに表示するカスタム・アクションを含むJSFページを作成する手順を説明します。
JSFページを作成するには:
-
アプリケーション・プロジェクトで、
customList.jspx
というJSFファイルを作成します。-
「file」メニューから、「新」を選択します。
-
「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「JSFページ」の順に選択します。
-
ページの名前を入力し、「OK」をクリックします。
-
-
次のサンプル・ページに示すように、
Output Text
、Command Link
などのコンポーネントを使用してカスタム・アクションUIを設計します。<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> <jsp:directive.page contentType="text/html;charset=UTF-8"/> <af:componentDef var="attrs" componentVar="component"> <af:panelGroupLayout id="dc_pgl1" rendered="#{backingBean.rendered}"> <af:outputText value="[" id="dc_ot1"/> <af:commandLink text="Test" id="dc_cl1" actionListener="#{backingBean.action}" binding="#{backingBean.customLink}"/> <af:outputText value="]" id="dc_ot2"/> </af:panelGroupLayout> </af:componentDef> </jsp:root>
このサンプルでは、
Test
というカスタム・アクションを作成します。このアクションのactionListener
属性およびbinding
属性は、前に作成したBackingBean
にバインドされます。 -
デフォルトの「タスク・フローの編集」オプションおよび「閉じる」オプションもタスク・フローの隣に表示するには、次の例に示すように、
zoom
というファセットを定義する必要があります。<af:xmlContent> <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component"> <facet> <facet-name>zoom</facet-name> </facet> </component> </af:xmlContent>
-
次の例に示すように、ページ・コンテンツに
zoom
ファセットを含めます。<af:outputText value="[" id="dc_ot3"/> <af:facetRef facetName="zoom"/> <af:outputText value="]" id="dc_ot4"/>
customLink.jspx
ページのソースは次のとおりです。<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> <jsp:directive.page contentType="text/html;charset=UTF-8"/> <af:componentDef var="attrs" componentVar="component"> <af:panelGroupLayout id="dc_pgl1" rendered="#{backingBean.rendered}"> <af:outputText value="[" id="dc_ot1"/> <af:commandLink text="Test" id="dc_cl1" actionListener="#{backingBean.action}" binding="#{backingBean.customLink}"/> <af:outputText value="]" id="dc_ot2"/> <af:outputText value="[" id="dc_ot3"/> <af:facetRef facetName="zoom"/> <af:outputText value="]" id="dc_ot4"/> </af:panelGroupLayout> <af:xmlContent> <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component"> <facet> <facet-name>zoom</facet-name> </facet> </component> </af:xmlContent> </af:componentDef> </jsp:root>
-
JSFページを保存します。
タスク・フローを含むアプリケーション・ページからのJSFページのコール
タスク・フローを含む単純なJSFページ(MyPage
.jspx
)があるとします。ページのソースを次の例に示します。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:pe="http://xmlns.oracle.com/adf/pageeditor" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"> <jsp:directive.page contentType="text/html;charset=UTF-8"/> <f:view> <af:document id="d1"> <af:form id="f1"> <af:panelStretchLayout topHeight="50px" id="psl1"> <f:facet name="top"> <pe:changeModeLink id="cml1"/> </f:facet> <f:facet name="center"> <!-- id="af_one_column_header_stretched" --> <pe:pageCustomizable id="pageCustomizable1"> <cust:panelCustomizable id="panelCustomizable1" layout="scroll"> <af:region value="#{bindings.taskflowdefinition1.regionModel}" id="r1"/> </cust:panelCustomizable> <f:facet name="editor"> <pe:pageEditorPanel id="pep1"/> </f:facet> </pe:pageCustomizable> </f:facet> </af:panelStretchLayout> </af:form> </af:document> </f:view> </jsp:root>
タスク・フロー(taskflowdefinition1
)には、次のview.jsff
フラグメントが含まれています。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> <af:panelGroupLayout layout="scroll" id="pgl1"> <af:commandButton text="commandButton 1" id="cb1"/> <af:commandButton text="commandButton 2" id="cb2"/> </af:panelGroupLayout> </jsp:root>
作成したカスタム・アクションを表示するには、コンポーザ内からcustomLink.jspx
ページがコールされるようにする必要があります。Page Customizable
コンポーネントのsourceViewNodeAction
属性を使用して、このカスタム・アクションを含むJSFページを参照します。
Page Customizable
タグが、ページ・ソースに次のように表示されます。
<pe:pageCustomizable id="pageCustomizable1" sourceViewNodeAction="/customLink.jspx">
sourceViewNodeAction
属性は、JSF (.jspx
)ファイルの名前、またはJSF (.jspx
)ファイル名として評価されるEL値を取ることができます。