非表示
宣言的コンポーネントのレイアウトを作成するため、ここではビジュアル・エディタ、コンポーネント・パレット、プロパティ・インスペクタなどの設計ツールを使用します。 その後で、プロジェクトをADF Library JARファイルにデプロイします。 宣言的コンポーネントを使用するアプリケーションに対しては、リソース・パレットを使用してデプロイしたJARを追加し、次にJSFページを含むプロジェクトにデプロイ済みJARを追加します。 宣言的コンポーネントを利用するには、シンプルなJSFページにこれを追加し、事前定義された属性を編集し、メソッドを作成して宣言的コンポーネントに関連付けます。 アプリケーションを実行すると、ページは次のように表示されます。
| 目的 | 所要時間 | アプリケーション |
|---|---|---|
このチュートリアルでは、ADF宣言的コンポーネントのメタデータを作成し、複合コンポーネントを構成するADF Facesコンポーネントを追加し、JSFページ上で宣言的コンポーネントを使用する方法を示します。 これから作成するアプリケーションの完成版を確認するには、「Download」ボタンをクリックして最終的なアプリケーションのzipファイルをダウンロードし、JDeveloperのmyworkフォルダに解凍してください。 |
40分 | ![]() |
メイン・メニューから「File」→「New」を選択します。 New Galleryで、Generalカテゴリを開き、「Applications」を選択します。 Itemsリストで「Fusion Web Application (ADF)」を選択し、「OK」をクリックします。
例に従って、アプリケーション名に
MyWebAppと入力します。
デフォルト値のままにして、「Finish」をクリックします。
新しいFusion Webアプリケーションを作成すると、Application Overviewウィンドウがデフォルトでエディタ・ウィンドウ領域に開きます。 このウィンドウは今回のアプリケーションに対するオブジェクト作成では使用しないため、任意で閉じて構いません。

メイン・メニューから再度、「File」→「New」を選択します。 New Galleryで、Generalカテゴリを開き、「Applications」を選択します。 Itemsリストで「Custom Application」を選択し、「OK」をクリックします。

Application Nameに
DeclarativeComponentsと入力し、「Next」をクリックします。
Project Nameに
DeclarativeComponentsと入力し、「Finish」をクリックします。
アプリケーション・ナビゲータで、先ほど作成したプロジェクトをダブルクリックして、Project Propertiesダイアログを開きます。 「JSP Tag Libraries」と「Distributed libraries」を選択して、「Add」をクリックします。

Choose Tag Librariesダイアログで「ADF Faces Components 11」を選択し、「OK」を2回クリックして、ダイアログを両方とも閉じます。

「
」Save Allをクリックして作業内容を保存します。
DeclarativeComponentsアプリケーションのProjectsパネルは、アプリケーション・ナビゲータに次のように表示されます。

非表示 同時に、プロジェクトとすべての環境設定が追跡記録されます。Oracle JDeveloperアプリケーションでは、作成するアプリケーションのタイプ(WebアプリケーションやJavaアプリケーションなど)に応じて、あらかじめ構築されたテンプレートに基づいて、事前定義された環境のタイプを指定できます。 アプリケーション・テンプレートには適切な機能の組合せが事前に指定されているため、標準アプリケーションのプロジェクト構造を素早く作成できます。 また、使用している機能に合った選択肢のみが使用できるように、JDeveloperで実行する処理がアプリケーション・テンプレートによりフィルタリングされます。
このチュートリアルでは、2つのアプリケーションを作成します。1つは宣言的コンポーネント用で、もう1つは宣言的コンポーネントを使用するアプリケーション用です。 宣言的コンポーネント・アプリケーションに対してはCustom Applicationテンプレートを使用します。このテンプレートでは、JDeveloperがサポートするすべての機能の関連オブジェクトを1つのプロジェクトから使用できます。 宣言的コンポーネントを使用するアプリケーションには、データバインドされたADF Webアプリケーションを構築するために構成されたFusion Web Application(ADF)テンプレートを使用します。
適切なテンプレートを使用してアプリケーションを作成した後も、新しいプロジェクトをアプリケーションに追加し、追加する機能を指定できます。 これを実行するには、アプリケーション・ナビゲータでアプリケーション名を右クリックして、「New Project」を選択します。 New Galleryでは、Itemsリストから任意のタイプのプロジェクトを選択できます。
非表示 関連する機能は、アプリケーション内のプロジェクトで定義されます。 JDeveloperプロジェクトは、関連するファイルを論理的にグループ化する際に使用します。ここでは、ソース・ファイル、パッケージ、クラス、イメージ、およびプログラムで必要になるその他の要素が管理されます。 プロジェクトでは、プログラムのコンパイル時や実行時に使用するソース・パスや出力パスなどの環境変数を管理します。 また、プロジェクトには、コンパイラ、ランタイム、デバッグに関するオプションが用意されており、プロジェクトごとにこれらのツールの動作をカスタマイズできます。
ソース・コードのアクセス、変更、再利用を簡単にするために、複数のプロジェクトをアプリケーションに追加できます。 それぞれのプロジェクトに含まれるファイルは、たとえば多層アプリケーションにおける各層に相当する場合もあれば、複雑なアプリケーションにおける各サブシステムに相当する場合もあります。 これらのファイルはどのディレクトリに配置されていても、1つのプロジェクトに含めることができます。
非表示 チェックリストは、Oracleが推奨するベストプラクティスに従ってFusion Webアプリケーションの構築をガイドします。 必要に応じて、アプリケーションの構成および構築プロセス全体の手順を示し、特定のダイアログやウィザードへのリンクを提示します。 各ステップはアーキテクチャ、ツール、結果のファイルについての情報を提供するように設計されており、段階的な手順や開発者ガイドの関連セクション、ステップ作業の実行によるIDEへの影響の説明に対するリンクが提供されます。
非表示 Oracle ADF Facesは、ADF FacesコンポーネントのJSPタグ・ライブラリを提供します。 ADF Facesコンポーネントのタグ・ライブラリを追加すると、JDeveloperは、タグ・ライブラリ記述子(TLD)ファイルの名前と場所、タグ・ライブラリの一意の識別子、実行時にタグ・ライブラリからタグを実行するために必要なJavaライブラリの名前、ライブラリがJSPページで使用される際のタグの接頭辞として望ましい値を追加します。
デフォルトでは、コンポーネント・パレットのADF FacesページにADF Facesタグが表示され、タグ・ライブラリのすべてのタグはJSPビジュアル・エディタで使用可能な、シミュレートされたJSP/サーブレット・コンテナで実行されます。 設計時に実行する必要があるタグをカスタマイズするには、Project PropertiesダイアログのJSP Tag Librariesページでタグ・ライブラリを選択して、「Customize」をクリックします。
非表示 アプリケーション・ナビゲータでは、プロジェクトは階層内の最上位レベルとして表示されます。 DeclarativeComponentsアプリケーションで使用したCustom Applicationテンプレートは、入力されたプロジェクト名を使用してプロジェクトを作成します。 宣言的コンポーネントの定義をDeclarativeComponentsプロジェクトに作成し、次に、このプロジェクトをデプロイします。
MyWebAppアプリケーションに切り替えるには、アプリケーション・ナビゲータのApplicationsドロップダウン・リストから「MyWebApp」を選択します。
MyWebAppアプリケーションに対するProjectsパネルは、アプリケーション・ナビゲータで次のように表示されます。
Webアプリケーションに使用されるFusion Web Application(ADF)テンプレートでは、アプリケーションを2つのプロジェクト(ModelとViewController)に分割します。. ここでは、ViewControllerプロジェクトにJSFページを作成します。
アプリケーション・ナビゲータのパネルはいずれも開閉できます。 2つのパネルの間のスプリッタをドラッグすれば、パネルのサイズを調整できます。 Projectsパネルで項目のグループ化やソートを行う場合は、
JDeveloperには多種多様なファイル・タイプを識別する機能が備わっており、アプリケーション・ナビゲータでファイルをダブルクリックすると、適切なビューアまたはエディタでファイルが表示されます。 アプリケーションまたはプロジェクトを終了すると、そのアプリケーションまたはプロジェクトのファイルを表示していたすべてのエディタまたはビューアが閉じられ、メモリからファイルがアンロードされます。
注:アプリケーション・ナビゲータのイタリック体のノードは、これらの要素が保存されていないことを示しています。 プロジェクトに含まれるファイルが選択されている場合、プロジェクト・ノードは太字で表示されます。
必要に応じて、アプリケーション・ナビゲータのドロップダウン・リストから「DeclarativeComponents」を選択し、DeclarativeComponentsアプリケーションに切り替えます。

-
アプリケーション・ナビゲータで「DeclarativeComponents」プロジェクトを右クリックし、「New」→「Web Tier」→「JSF/Facelets」→「ADF Declarative Component」の順に選択して、「OK」をクリックします。

宣言的コンポーネントの名前として
myMenubarと入力します。-
ドキュメント・タイプとして「Facelets」を選択し、デフォルトのファイル名、ディレクトリ名、パッケージ名を受け入れます。

「Add Tag Library」をクリックして、Create Declarative Component Tag Libraryダイアログを開きます。

-
ここで次の値を入力し、「OK」をクリックします。
フィールド 値 Tag Library Name MyDeclComponentsTag Library URI /mycomponentsTag Library Prefix mc -
Create ADF Declarative Componentダイアログで、Facet Definitionsタブを前面に表示し、「
」をクリックして今後のコンテンツのためにプレースホルダを追加します。 NameフィールドにmoreMenusと入力します。
「Attributes」をクリックしてタブを前面に表示し、「
」をクリックして属性を追加して、後から宣言的コンポーネントに設定できるようにします。 NameフィールドにmenuLabelと入力します。 Typeはデフォルト値のjava.lang.Stringを受け入れます。
「Methods」をクリックしてタブを前面に表示し、「
」をクリックしてメソッドを追加して、後から宣言的コンポーネントに登録できるようにします。 デフォルトのメソッド名method1を受け入れます。 Method Signatureフィールドにvoid method(javax.faces.event.ActionEvent)と入力します。
「OK」をクリックします。
デフォルトで、JDeveloperはビジュアル・エディタに新しい宣言的コンポーネント定義ファイルを開きます。
「
」Save Allをクリックして作業内容を保存します。
非表示 宣言的コンポーネントは、異なるコンテンツあるいは同一のコンテンツを含む、1つのページの異なる部分または複数のページを構築するための基盤として使用できます。 たとえば、1ページの異なる部分または複数ページにわたって共通する一連のボタンがある場合、これらのボタンを含む宣言的コンポーネントを作成してから、共通の機能を必要とするページ上で、その宣言的コンポーネントを使用できます。
宣言的コンポーネントを、コンポーネントが定義されたプロジェクト内で使用することはできません。 言い換えると、あるプロジェクトで宣言的コンポーネントを作成したら、この宣言的コンポーネントを使用するページは別のプロジェクトで作成する必要があります。
非表示 宣言的コンポーネントの名前に使用できるのは半角英数字のみ(SampleNameまたはSampleName1など)です。 宣言的コンポーネントのパッケージ名は、後から宣言的コンポーネントにJavaクラスを作成する際に、JDeveloperによって使用されます。 また、JDeveloperはデフォルトで、宣言的コンポーネントの定義ファイルのXMLファイル名に宣言的コンポーネント名を使用します(
sampleName1.jsfなど)。 宣言的コンポーネントは、コンポーネント定義ファイル内部の2つのセクション、メタデータ・セクションとレイアウト・セクションで示されます。前者にはコンポーネントのすべてのメタデータ(コンポーネントの表示名やタグ・ライブラリ情報)が含まれ、後者には宣言的複合コンポーネントを構成する個々のADF Facesコンポーネントがすべて含まれます。
非表示 タグ・ライブラリのURIと接頭辞は、宣言的コンポーネントのタグ・ライブラリの名前空間と接頭辞を指定します。これらは、宣言的コンポーネントを消費するJSFページ内でJDeveloperによって使用されます。 次に例を示します。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:mc="/mycomponents">
非表示 ADFページ・テンプレートと同様に、ADF宣言的コンポーネントにもファセット、属性、メソッドが含まれており、ページ作成者はこれらを使用することで、異なるページやページ内の異なる部分での宣言的コンポーネントの使用方法を設定できます。 たとえば、ページ作成者が宣言的コンポーネント内の個々のボタンに対してラベルを変更できるような属性を追加できます。
提供する複合コンポーネントの機能によっては、宣言的コンポーネントのメタデータ作成時にファセット定義、属性、またはメソッドのいずれかを追加する必要がない場合もあります。 これは、宣言的コンポーネントに対するファセット定義、属性、メソッドの追加が必須ではないためです。 このチュートリアルでは、それぞれのタイプを1つずつ追加します。
ページ・テンプレートと同様に、宣言的コンポーネント内のファセットは複合コンポーネント内に定義された領域であり、ページ作成者が宣言的コンポーネントを使用してページの一部を作成する際、ここにコンテンツを追加できます。 ページ作成者が独自のコンテンツを宣言的コンポーネントに追加できるようにするには、将来的なコンテンツのプレースホルダとして1つまたは複数のファセットを定義しておきます。
たとえば、宣言的コンポーネントにパネル・ヘッダー・コンポーネントが含まれており、ページ作成者がこのパネル・ヘッダー内に独自のコンテンツを追加できるようにする場合、
pheader-contentsという名前のファセット定義を追加します。
次に、宣言的コンポーネントのレイアウトを設計する際、ページ作成者がパネル・ヘッダー・コンポーネントにコンテンツをドロップできるようにするため、af:facetRefタグをaf:panelHeaderコンポーネントに挿入し、pheader-contentsファセット名を参照します。 次に例を示します。
<af:panelHeader text="panelHeader 1" id="dc_ph1">
...
<af:facetRef facetName="pheader-contents"/>
</af:panelHeader>
非表示 たとえば、ページ作成者がパネル・ヘッダー・コンポーネントに独自のタイトルを設定できるようにするには、
pheader-titleと言う名前とjava.lang.Stringというタイプを指定した属性を追加します。 次に、宣言的コンポーネントのレイアウトを設計する際、ページ作成者が独自のパネル・ヘッダー・タイトルを設定できるようにするため、宣言的コンポーネントのvar属性を使用して、af:panelHeaderのtext属性のpheader-titleを参照するEL式を挿入します。 次に例を示します。<af:panelHeader text="#{attrs.pheader-title}".../>
非表示 たとえば、宣言的コンポーネントにコマンド・ボタンが含まれており、ページ作成者が独自のアクション・リスナー・メソッドを関連付けられるようにするには、
method1という名前とvoid method(javax.faces.event.ActionEvent)メソッド・シグネチャが設定されたメソッドを追加します。 次に、宣言的コンポーネントのレイアウトを設計する際、宣言的コンポーネントのcomponentVar属性を使用して、af:commandButtonコンポーネントのactionListener属性のmethod1メソッドを参照するEL式を挿入します。 次に例を示します。 <af:commandButton text="commandButton 1" id="dc_cb1"
actionListener="#{comp.handleMethod1}"/>>
af:componentDefノードが開かれている場合、myMenubar.jsfのStructureウィンドウは次のように表示されます。
非表示
宣言的コンポーネントのすべての定義は、
af:componentDef要素内に含まれます。この要素は2つの部分に分かれており、af:xmlContent要素と、af:xmlContent要素の外部にあって宣言的コンポーネントのレイアウトを定義するコンポーネントで構成されています。 この時点では、af:xmlContentの外部にコンポーネントは存在しません。 af:xmlContent要素には、宣言的コンポーネントの名前、ファセット、属性、関連付けられたメソッド・シグネチャ、およびタグ・ライブラリの詳細を示すメタデータが含まれます。 af:xmlContentの外部(ただしaf:componentDefの内部)に挿入するコンポーネントは、どれも宣言的複合コンポーネントのレイアウトを構成します。 宣言的コンポーネントのメタデータはいつでも変更できます。これには、ファセット、属性、メソッドの追加が含まれます。 Structureウィンドウで、
af:xmlContent内の「af:componentDef」または任意の要素を選択します。 次に、プロパティ・インスペクタを使用して、メタデータを編集します。 プロパティ・インスペクタでは、タグ・ライブラリの詳細(名前や接頭辞など)を変更できません。
アプリケーション・ナビゲータに表示された
declarativecomp-metadata.xmlファイルは、定義プロジェクト内に作成するすべての宣言的コンポーネントを追跡するためにJDeveloperによって作成された特殊なファイルです。
declarativecomp-metadata.xmlファイルには宣言的コンポーネント定義ファイルの名前とパスに加えて、宣言的コンポーネントを含むタグ・ライブラリの情報が格納されています。 次に例を示します。
<declarativeCompDefs xmlns="http://xmlns.oracle.com/adf/faces/rich/declarativecomp">
<declarativecomp-jsp-ui-def>/myMenubar.jsf</declarativecomp-jsp-ui-def>
<declarativecomp-taglib>
<taglib-name>MyDeclComponents</taglib-name>
<taglib-uri>/mycomponents</taglib-uri>
<taglib-prefix>mc</taglib-prefix>
</declarativecomp-taglib>
</declarativeCompDefs>
-
コンポーネント・パレットのADF FacesページのMenus and Toolbars パネルで、「
」Menu Barをドラッグして、ビジュアル・エディタの空白ページにドロップします。
ビジュアル・エディタにコンポーネントをドラッグすると、Component Defという名前の長方形の領域がページ上に表示されます。これは、今ドラッグしているコンポーネントがそのターゲット・コンポーネント内に挿入されることを意味しています。
メニュー・バー・コンポーネント
メニュー・コンポーネント(メニュー・バー内部に挿入)
2つのメニュー項目コンポーネント(メニュー・コンポーネント内部に挿入)
-
追加したメニュー・バーに、「
」Menuをドラッグ・アンド・ドロップします。 -
Menuのプロパティ・インスペクタのCommonセクションで、Text属性の値を
Fileに変更します。
-
コンポーネント・パレットのMenus and Toolbarsパネルで、先ほど追加したメニュー・コンポーネントに「
」Menu Itemをドラッグ・アンド・ドロップします。 -
プロパティ・インスペクタのCommonセクションで、Textの値を
Deleteに変更します。
ここまでに追加した3つのコンポーネントがStructureウィンドウに表示されます。

-
Menu Itemのプロパティ・インスペクタのAppearanceセクションで、Iconフィールドの横に表示されている
ドロップダウン・メニューから「Edit」を選択します。 続いて、ダイアログを使用してイメージ・ファイルを検索し、選択します。 
-
「OK」をクリックします。 プロンプトが表示されたら、「Yes」をクリックしてアイコン・イメージをリソース・ディレクトリの下に追加し、「Save」をクリックします。
プロパティ・インスペクタのIconフィールドに#{resource['images:delete.png']}と表示されます。

-
コンポーネント・パレットのMenus and Toolbars パネルで、「
」Menu Itemをドラッグし、Structureウィンドウのaf:menu - File要素にドロップします。 
新しいMenu Itemのプロパティ・インスペクタのAppearanceセクションで、Iconフィールドの横に表示されている
ドロップダウン・メニューから「Edit」を選択します。 次に、このダイアログを使用して、先ほど追加したメニュー項目コンポーネントに対する別のイメージ(例:user.png)を探して選択します。 
-
「OK」をクリックします。 プロンプトが表示されたら、「Yes」をクリックしてアイコン・イメージをリソース・ディレクトリの下に追加し、「Save」をクリックします。
同じメニュー項目に対するプロパティ・インスペクタで、Textフィールドのデフォルト値を削除し、
ドロップダウン・メニューから「Expression Builder」を選択します。 
Expression BuilderでScoped Variablesを開き、次にattrsを開きます。 「menuLabel」をクリックして、式
#{attrs.menuLabel}を作成します。 「OK」をクリックします。
-
プロパティ・インスペクタのCommonセクションで、Menu Actionの下のActionListenerフィールドの横にある
ドロップダウン・メニューから「Edit」を選択します。 -
Edit Property: ActionListenerダイアログで、「Declarative Component Methods」を選択します。

ドロップダウンにmethod1が表示されていることを確認し、「OK」をクリックします。
プロパティ・インスペクタのActionListenerフィールドに、#{comp.handleMethod1}と表示されます。
コンポーネント・パレットのLayoutパネルのCore Structureセクションで、「
」Facetをドラッグし、Structureウィンドウ内のaf:menuBar要素にドロップします。 Insert Facetダイアログで、ドロップダウン・リストから「moreMenus」を選択します。 「OK」をクリックします。 
「
」Save Allをクリックして作業内容を保存します。
ビジュアル・エディタには次のようなページが表示されます。
非表示 通常、最初にレイアウトまたはコンテナ・コンポーネント(Panel Group Layoutなど)を追加してから、このレイアウトまたはコンテナ・コンポーネントに他のコンポーネントを挿入します。 宣言的コンポーネントのレイアウトにコンポーネントを追加する方法は、JSFページにコンポーネントを追加する方法と似ています。 設計ツールを自由に組み合わせて、宣言的コンポーネントのレイアウトを作成できます。 たとえば、ビジュアル・エディタ、プロパティ・インスペクタ、コンポーネント・パレットを使用して、メニュー・バーを作成できます。
宣言的コンポーネント定義のレイアウト部分に、次のADF Facesコンポーネントを挿入します。
<jdev_home>/jdeveloper/ide/lib/フォルダを検索し、「oicons.jar」をダブルクリックして開きます。
非表示 次に、oracle/javatools/iconsへ移動して、イメージ・ファイル「delete.png」を選択します。
非表示 宣言的コンポーネントのすべての定義は、
af:componentDef要素内に含まれます。 af:componentDef内には、宣言的コンポーネントのレイアウトを構成する個々のコンポーネントと、属性やメソッドなどの宣言的コンポーネントのメタデータを含むaf:xmlContent要素が存在します。 次に示すとおり、JDeveloperはデフォルトで
af:componentDefのvar属性とcomponentVar属性に対して、それぞれattrsおよびcompという値を割り当てます。 <af:componentDef var="attrs" componentVar="comp"> var属性は、宣言的コンポーネントの固有属性にアクセスするために使用するEL変数の名前を指定します。 componentVar属性は、宣言的コンポーネントのインスタンス自体を参照する際に使用するEL変数の名前を指定します。 宣言的コンポーネントのどこで属性を使用するかを指定するには、宣言的コンポーネント・レイアウト内のコンポーネントの適切なプロパティで、EL変数
varと属性名を参照するEL式を使用します。 たとえば、ページ作成者がメニュー項目に独自のラベルを入力できるようにするには、コマンド・メニュー項目コンポーネントのtextプロパティにEL式を挿入します。 <af:commandMenuItem id="dc_cmi2"
text="#{attrs.menuLabel}".../> ここで、
menuLabelはメタデータ内に定義された属性名です。 宣言的コンポーネントのどこでメソッドを使用するかを指定するには、宣言的コンポーネント・レイアウト内のコンポーネントの適切なプロパティで、EL変数
componentVarとメソッド名を参照するEL式を使用します。 たとえば、ページ作成者がメニュー項目に独自のアクション・リスナー・メソッドを入力できるようにするには、コマンド・メニュー項目コンポーネントのactionListenerプロパティにEL式を挿入します。 <af:commandMenuItem id="dc_cmi2"
actionListener="#{comp.handleMethod1}".../> ここで、
method1はメタデータ内に定義されたメソッド名です。
非表示
これによって、必要に応じて、宣言的コンポーネントを使用するページ作成者がFileの後に付加的なメニューを追加できるようになります。 Facet Refタグは、宣言的コンポーネント・メタデータにあらかじめ定義されたファセット名を参照します。
アプリケーション・ナビゲータで、「DeclarativeComponents」プロジェクトを選択します。 メイン・メニューから「Build」→「Deploy」→「New Deployment Profile」を選択します。

-
Create Deployment Profileダイアログで、Profile TypeにADF Library JAR Fileが指定されていることを確認します。 Deployment Profile Nameに
adflibDeclarativeComponents1と入力し、「OK」をクリックします。
Edit ADF Library JAR Deployment Profile Propertiesダイアログで「JAR Options」をクリックしてJARファイル名を確認したら、「OK」をクリックします。
「
」Save Allをクリックして作業内容を保存します。アプリケーション・ナビゲータで、「DeclarativeComponents」プロジェクトを右クリックして、「Deploy」→「adflibDeclarativeComponents1」を選択します。 Deployウィザードで、Deploy to ADF Library JAR fileが選択されていることを確認します。 「Finish」をクリックしてデプロイを開始します。

-
Deployment - Logウィンドウで、ADF Library JARファイルを含むdeployフォルダの場所を確認します。

非表示 宣言的コンポーネントを共有または再使用するには、まずそのようなコンポーネントの定義を含むプロジェクトをADF Library JARファイルにデプロイする必要があります。 複数の定義プロジェクトがある場合は、各プロジェクトを1つのADF Library JARにデプロイする必要があります。
非表示
JDeveloperはデフォルトで、生成するADF Library JARの名前としてデプロイメント・プロファイル名を使用します。 プロファイル名を入力せずにデフォルト値を受け入れた場合、JDeveloperは、adflibNNNという形式を使用してJAR名を生成します。ここで、NNNは自動生成される数字です。
また、JDeveloperは、ファイル・システムのプロジェクト・フォルダの下にあるデフォルトの
deployフォルダにADF Library JARを配置します。 配置されたJARファイルのデフォルト・フォルダの名前と場所を変更するには、「Tools」→「Preferences」を選択します。 次に、Deploymentページで相対または絶対プロジェクト・レベルのデプロイメント出力ディレクトリを変更します。 デプロイメント・プロファイルの作成後にADF Library JARファイルの場所と名前を変更するには、プロジェクトをダブルクリックしてProject Projectsダイアログを開きます。 Deploymentページでプロファイルを選択し、「Edit」をクリックします。
次に、ADF Library JAR Deployment Profile PropertiesダイアログのJAR Optionsページで、JARファイルの名前と場所を変更します。
注: ADF Library JARのファイル名には、開発チームのネーミング規則があればこれに従い、コンテンツの機能が分かるような名前を指定します。 たとえば、HRアプリケーションの宣言的コンポーネントだけを含むADF Library JARを作成する場合は、
mycompany.HRApp.DeclComps.jarのような名前を使用します。
非表示 また、JARにはタグ・ライブラリ・ディスクリプタ・ファイル(.tldファイル)や、宣言的コンポーネントのために作成されたコンポーネント・クラスとタグ・クラスも含まれます。 ADF Library JARファイルは、アプリケーション内のコンポーネント、または異なるアプリケーションにわたるコンポーネントをパッケージ化し、再使用するための便利な方法を提供します。 JARファイルは、同一チームの開発者、またはさまざまなチームの開発者や同じ組織の複数の部門が共有できます。 ADF Library JARファイルはモジュラー型であるため、宣言的コンポーネントのような再使用できるコンポーネントを変更した場合、定義プロジェクトも再デプロイする必要があります。
リソース・パレットを開いていない場合は、メイン・メニューから「View」→「Resource Palette」を選択して開きます。 IDE Connectionsパネルを開きます。

-
Newドロップダウン・メニューから「New Connection」→「File System」を選択します。 
Create File System Connectionダイアログで、Connection Nameに
DeclarativeComponentsと入力します。
Directory Pathフィールドの横にある「Browse」をクリックし、ダイアログを使用して「deploy」フォルダの場所を探し、フォルダを選択します。
deployフォルダには、宣言的コンポーネント定義プロジェクトをデプロイしたステップで作成したADF Library JARが含まれています。
Create File System Connectionダイアログに戻ると、deployフォルダのディレクトリ・パスが表示されます。
「Test Connection」をクリックします。 Success!メッセージが表示されたら、「OK」をクリックします。
リソース・パレットで、File System、DeclarativeComponentsを開き、デプロイ済みのADF Library JARファイルであるadflibDeclarativeComponents1.jarを表示します。

アプリケーション・ナビゲータで、ドロップダウン・リストから「MyWebApp」を選択し、宣言的コンポーネントを使用するアプリケーションに切り替えます。

アプリケーション・ナビゲータで、JSFページを格納した「ViewController」プロジェクトを選択します。
リソース・パレットで「adflibDeclarativeComponents1.jar」を右クリックし、「Add to Project」を選択します。

-
Confirm Add ADF Libraryダイアログで、「Add Library」をクリックします。
アプリケーション・ナビゲータのViewControllerプロジェクト名が標準的なフォントからイタリックに変更されます。これは、プロジェクトが変更されたばかりで、まだ保存されていないからです。
非表示 リソース・パレットは、ADF Library JARファイルを配布および使用するための簡単で効率的な手段を提供します。 再使用可能なコンポーネントの開発者は、プロジェクトのすべてのアーチファクトをADF Library JARにパッケージ化した後で、JDeveloperのリソース・パレットを使用して、そのJARを再使用可能なコンポーネントのリポジトリに追加します。 リソース・パレットは異なるソースにアクセスするための複数の接続を提供し、構造ツリー・ビューにさまざまな接続およびADF Library JARコンポーネントのタイプを表示します。 ここでは、ADF Library JARを保存および共有するためにファイル・システム接続を作成します。 ADF Library JARをリソース・パレットに追加すると、他の開発者はこれを検索してプロジェクトに追加できるようになります。
再使用可能なコンポーネントの使用者はリソース・パレットを使用し、宣言的コンポーネントを含むADF Library JARを検索および参照します。 次に、宣言的コンポーネントを使用するプロジェクトにADF Library JARを追加します。 JARをプロジェクトのライブラリのセットに追加することで、JARは設計時にプロジェクトのクラス・パスに追加され、再使用可能になります。 実行時、再使用コンポーネントは、参照されることでJARファイルから実行されます。
非表示 このため、MyWebAppアプリケーションのViewControllerプロジェクト内にWebページを作成します。
非表示 使用側のプロジェクトにADF Library JARを追加すると、JDeveloperによって、宣言的コンポーネントを含むタグ・ライブラリがプロジェクトのFaceletsタグ・ライブラリに追加されます(Project PropertiesダイアログのFacelets Tag Librariesページを参照)。
また、JDeveloperはプロジェクト内にADF Library定義を作成し、プロジェクトのクラス・パスにADF Libraryを追加します(Project PropertiesダイアログのLibraries and Classpathページを参照)。
「Edit」をクリックすると、クラス・パスにADF Library JARが表示されます。
ADF LibraryのDeployed by Defaultオプションがデフォルトで選択されています。 これは、アプリケーションをWARファイルとしてアーカイブまたは構築すると、JDeveloperがADF Library JARのコンテンツをアーカイブまたはWARファイルにコピーすることを意味します。
JSFページを設計する際、宣言的コンポーネントのタグ・ライブラリがコンポーネント・パレットに表示され、宣言的コンポーネントがパレットから選択できるようになります。
アプリケーション・ナビゲータのViewControllerプロジェクトで、「adfc-config.xml」をダブルクリックして、デフォルトのページ・フロー・ダイアグラムを開きます。

コンポーネント・パレットのADF Task FlowページのComponentsパネルで、「
」Viewをクリックし、次にダイアグラムをクリックして、ページ・アイコンをダイアグラムに追加します。 デフォルトのページ名をMyPageに変更します。
ダイアグラムで追加したばかりのページ・アイコンをダブルクリックし、Create JSF Pageダイアログを開きます。
Document Typeに「Facelets」を選択し、デフォルト・ファイル名(例:
MyPage.jsf)を受け入れます。
Page Layoutページで「Blank Page」を選択します。
「Managed Bean」をクリックし、「Do Not Automatically Expose UI Components in a Managed Bean」を選択します。
「OK」をクリックします。
JDeveloperによってビジュアル・エディタにページが表示されます。
コンポーネント・パレットのADF FacesページのLayoutパネルで、「
」Panel Group Layoutをドラッグしてビジュアル・エディタの空白ページにドロップします。プロパティ・インスペクタのCommonセクションで、Layout属性の値をscrollに変更します。
コンポーネント・パレットで、ドロップダウン・リストから「MyDeclComponents」(先ほど作成したタグ・ライブラリ)を選択します。

宣言的コンポーネント「MyMenubar」をドラッグし、ページ上のPanel Group Layoutコンポーネントにドロップします。

「
」Save Allをクリックして作業内容を保存します。
ビジュアル・エディタには次のようなページが表示されます。
非表示 Fusion Web Applicationテンプレートを使用してFusion Webアプリケーションを作成すると、JDeveloperによって、デフォルトで空白のアンバウンド・タスク・フロー(ソース・ファイル
adfc-config.xml)が作成されます。 ダイアグラムでは、通常、ユーザーのタスクを完了するために相互作用するアクティビティとコントロール・フロー・ルールを定義します。 このチュートリアルでは、作成するJSFページを表すViewアクティビティを1つ作成します。
非表示 黄色の警告記号は、Viewアクティビティがまだ物理的なページ・ファイル(例:MyPage.jsf)に関連付けられていないことを示しています。 ページ・ファイルを作成すると、ページ・アイコンの黄色の警告記号は消えます。
非表示 デフォルトでは、コンポーネントはマネージドBeanに対して公開されません。 コンポーネントをマネージドBeanにバインドする場合は、このダイアログのManaged Beanページでいずれかの自動バインディング・オプションを選択します。
既存のマネージドBeanに対するバインド方法のオプションを選択できるのは、アプリケーションにマネージドBeanが構成されている場合のみです。
UIコンポーネントをマネージドBean内で自動的に公開するように指定すると、新規のJSFページを作成するたびに自動的にバッキングBeanが作成されます。 ページ上にコンポーネントをドロップすると、各コンポーネントにBeanプロパティが挿入され、コンポーネント・インスタンスとプロパティは
binding属性を使用してバインドされます。これにより、Beanでコンポーネント・インスタンスを受け取ったり返したりできるようになります。 注:ページにADFバインディングを追加する場合は、自動バインディング機能を使用しないでください。 自動バインディング機能を使用した場合は、ADFバインディングを追加した後でマネージドBeanバインディングを削除する必要があります。
非表示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns:f="http://java.sun.com/jsf/core"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:mc="/mycomponents">
<af:document title="MyPage.jsf"..>
<af:form..>
<af:panelGroupLayout layout="scroll"..>
<mc:myMenubar id="mm1">
<f:facet name="moreMenus"/>
</mc:myMenubar>
</af:panelGroupLayout>
</af:form>
</af:document>
</f:view>
プロパティ・インスペクタに、宣言的コンポーネントで変更できる属性、MenuLabelおよびMethod1が表示されます。
Structureウィンドウのaf:panelGroupLayoutの下に、宣言的コンポーネントmc:myMenubarが表示されます。 mc:myMenubarを開くと、MyMenubarファセット・フォルダ内にmoreMenusファセットが表示されます。
Structureウィンドウで、宣言的コンポーネント「mc:myMenubar」を選択します。
プロパティ・インスペクタで、MenuLabel属性に
Helloと入力します。Method1フィールドの横にある
ドロップダウン・メニューから、「Edit」を選択します。 
Edit Propertyダイアログで、Managed Beanドロップダウン・リストの横にある「New」をクリックします。

Create Managed Beanダイアログで次の値を入力または選択して、「OK」をクリックします。
フィールドまたはオプション 値 Bean Name myBeanClass Name MyBeanExtends java.lang.ObjectScope request Registration Configuration File Generate Class If It Does Not Exist 選択する application: Webアプリケーションが実行されている間、Beanが使用可能です。 このスコープは、LDAPディレクトリなどのグローバルなBeanに有用です。session: クライアント・セッションの間、クライアントがBeanを使用できます。request: インスタンス化されてからクライアントに応答が返されるまで、Beanが使用可能です。 これは通常、現在のページの存続期間です。none: Beanは参照されるたびにインスタンス化されます。 これは、Beanが別のBean内で参照されている場合に有用です。-
backingBeanScope: これは、HTTPリクエストが出されてからレスポンスがクライアントに返されるまでの時間です。 ページ上に複数のページ断片や宣言的コンポーネントが存在する場合は、ページ断片や宣言的コンポーネントに関連付けられたマネージドBeanに対してこのスコープを使用します。 衝突を避けるため、すべての値は別々のスコープ・インスタンスに保持する必要があります。 -
pageFlowScope: ADFバウンド・タスク・フロー内のアクティビティ間でデータを受け渡すためのメモリ・スコープです。 このスコープでは、ADFバウンド・タスク・フローの各インスタンスに対応する一意なストレージ領域が定義されます。 その存続期間はADFバウンド・タスク・フローに準じ、requestスコープよりも長く、sessionスコープよりも短くなります。 -
viewScope: このスコープが指定されている場合、JDeveloperはユーザーがページとの対話を継続する限り、使用されるオブジェクトをページに保持します。 ユーザーがページの使用を終了すると、それらのオブジェクトは自動的に解放されます。 -
Edit Propertyダイアログで、Methodドロップダウン・リストの横にある「New」をクリックしてCreate Methodダイアログを開きます。

Method Nameフィールドに
myMethodと入力して、「OK」をクリックします。
Edit Propertyダイアログの表示は次のようになります。
「OK」をクリックして、Edit Propertyダイアログを閉じます。
プロパティ・インスペクタのMethod1フィールドに、式#{myBean.myMethod}が表示されます。アプリケーション・ナビゲータで「MyBean.java」をダブルクリックしてファイルを開きます (すでにファイルを開いている場合は、エディタ・ウィンドウの最上部にある「MyBean.java」ドキュメント・タブをクリックすると、ソース・エディタが前面に表示されます)
-
生成されたメソッド内に、"Hello World"というテキストを出力するためのコードを追加します。
例として、太字で表示したサンプル・コードをコピーして貼り付けます。 -
エディタ・ウィンドウで「MyPage.jsf」ドキュメント・タブをクリックして、ビジュアル・エディタを前面に表示します。
-
コンポーネント・パレットのドロップダウン・リストから「ADF Faces」を選択します。 Menus and Toolbarsパネルから「
」Menuをドラッグし、ビジュアル・エディタまたはStructureウィンドウのmoreMenusファセットにドロップします。 -
プロパティ・インスペクタのCommonセクションでTextの値として
Editと入力し、[Enter]を押します。 -
コンポーネント・パレットで、追加したばかりのメニュー・コンポーネントに「
」Menu Itemをドラッグ・アンド・ドロップします。 プロパティ・インスペクタのCommonセクションで、Textの値としてCutと入力します。 -
別の「
」Menu ItemをStructureウィンドウのaf:menu - Edit要素にドラッグ・アンド・ドロップします。 プロパティ・インスペクタのCommonセクションで、2番目のメニュー項目のTextの値としてCopyと入力し、[Enter]を押します。
ビジュアル・エディタには次のようなページが表示されます。
エディタ・ウィンドウで、「adfc-config.xml」ドキュメント・タブをクリックして、ページ・フロー・ダイアグラムを前面に表示します。 ダイアグラムで、「MyPage」ページ・アイコンを右クリックして、「Run」を選択します。
Create Default Domainダイアログが表示されたら、PasswordフィールドとConfirm Passwordフィールドにデフォルト・パスワード(例:weblogic1)を入力し、「OK」をクリックします。
次のようなページがブラウザに表示されます。
まだ実行中でない場合は、Integrated WebLogic Serverを起動します。
アプリケーションをコンパイルしてIntegrated WebLogic Serverにデプロイします。
次のデフォルトのアドレスを使用して、デフォルトのブラウザ内でアプリケーションを起動します。
http://<your_machine_IP_address>:<http_port>/<your_application_name>-<your_project_name>-context-root>/faces/<path_to_the_page>ブラウザ内のページで「Edit」メニューと「File」メニューをクリックして、メニュー項目を表示します。
Editメニューは、次のように表示されます。
「File」メニューから「Hello」を選択します。

menuLabel)、メソッド定義(method1)、ファセット定義(moreMenus)が1つずつ含まれています。
非表示 ページ作成者が独自のメニュー項目ラベルを入力できるようにするため、コマンド・メニュー項目コンポーネントの
textプロパティにはEL式#{attrs.menuLabel}を挿入しました。 設計時に、宣言的コンポーネントのmenuLabel属性を編集すると、コマンド・メニュー項目にtext値が渡されます。 また、ページ作成者がメニュー項目に対して独自のアクション・リスナー・メソッドを入力できるようにするため、コマンド・メニュー項目コンポーネントの
actionListenerプロパティにはメソッド式#{comp.handleMethod1}を挿入しました。 ページの設計時に、宣言的コンポーネントのmethod1属性を編集すると、メソッド式を介してコマンド・コンポーネントにアクション・リスナーが関連付けられます。 次に、アプリケーション・ユーザーがメニュー項目を選択した場合の処理を定義するため、アプリケーション内にマネージドBeanとして登録されているJavaBeanクラスにメソッド・コードを追加します。 ページ作成者がメニュー・バーに追加メニューを追加できるようにするため、パネル・メニュー・バー・コンポーネントの
moreMenusを参照するFacet Refタグを挿入してあります。 後でmoreMenusファセットを編集し、メニュー・バーにメニューを追加します。
faces-config.xmlに登録されています。
非表示 ADFデータ・バインディングとADFタスク・フローを使用するアプリケーションでは、マネージドBeanは構成ファイルadfc-config.xmlまたはタスク・フロー定義ファイルに登録されている必要があります。 アプリケーションが起動する際、構成ファイル(1つまたは複数)を解析することでBeanが使用可能になります。 マネージドBeanが参照される(たとえば、値式と呼ばれるコンポーネントのタグ属性の値としてEL式内で参照される)と、マネージドBean作成機能が、そのBeanのデフォルトのコンストラクタ・メソッドを呼び出してBeanをインスタンス化します。 プロパティが宣言されている場合は、それらに宣言済みのデフォルト値が設定されます。
マネージドBeanは、構成ファイルの
<managed-bean>要素を使用して登録されています。 構成ファイルでXMLを手動で編集するか、adfc-config.xmlまたはfaces-config.xmlに対して概要エディタを使用するか、もしくはCreate Managed Beanダイアログを使用することにより、マネージドBeanを構成ファイルに追加できます。
非表示 このシンボリック名は、Beanのプロパティとメソッドを参照する必要がある際、Beanを識別するために使用します。 Beanを直接参照する代わりにシンボリック名を使用しているため、プレゼンテーションがアプリケーション・ロジックと分離され、ビューに影響を及ぼすことなくモデルを変更できます。 マネージドBeanのスコープによって、Beanが格納されるスコープが決まります。 Beanの有効なスコープは次のとおりです。
backingBeanScope、pageFlowScope、およびviewScopeは標準のJSFスコープではありません。 Beanを参照するには、EL式に明示的にスコープを含める必要があります。 たとえば、backingBeanScopeを使用してTheBeanというマネージドBeanを参照する場合の式は、#{backingBeanScope.TheBean}となります。 XMLエディタで表示すると、構成ファイルのマネージドBeanの登録は次のようになります。
<managed-bean>
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>MyBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
// ここにイベント・コードを追加...
System.out.println("!!! Hello World !!!");
}
af:group内のメニュー・コンポーネントをグループ化することにより、メニュー間でセパレータを使用できます。 次に例を示します。
非表示
<af:menuBar>
<af:menu text="A"/>
<af:menu text="B"/>
<af:group>
<af:menu text="C"/>
<af:menu text="D"/>
</af:group>
</af:menuBar>
実行時に、メニューは次のように表示され、BとCの間にセパレータ・ラインが表示されます。 A B | C D
ただし、次のように
moreMenusファセット内でグループを使用すると、セパレータ・ラインは表示されません。
<f:facet name="moreMenus">
<af:group>
<af:menu text="C"/>
<af:menu text="D"/>
</af:group>
</f:facet>
非表示
<mc:myMenubar menuLabel="Hello" method1="#{myBean.myMethod}"..>
<f:facet name="moreMenus">
<af:menu text="Edit"..>
<af:commandMenuItem text="Cut"../>
<af:commandMenuItem text="Copy.."/>
</af:menu>
</f:facet>
</mc:myMenubar>
非表示 Integrated WebLogic Serverは、パッケージ化されたアーカイブ・デプロイメント用のJava EEランタイム・サービスです。 ゼロコピー・デプロイメントに基づき、Integrated WebLogic Serverでは、アプリケーションとそのプロジェクトのJava EEアプリケーションとしての実行とテストをJava EEコンテナ内で行えます。 Integrated WebLogic Serverの使用に際し、特別な接続設定は必要ありません。 アプリケーション全体、プロジェクト、または個別のJSFページを実行できます。
IDEでJSFアプリケーションを実行すると、次の処理が自動的に実行されます。
注: アプリケーションを終了すると、アプリケーションは停止し、Integrated WebLogic Serverからアンデプロイされますが、Integrated WebLogic Serverは終了されません。
非表示 Editメニュー・コンポーネントと2つのコマンド・メニュー項目コンポーネント(CutおよびCopy)は、宣言的コンポーネントのmoreMenusファセットに追加されています。
非表示 !!! Hello World !!! FileメニューとDeleteメニュー項目は、
menuLabel属性およびmethod1メソッドとともに、宣言的コンポーネントの定義内に指定されています。 Helloレベルの追加とテキスト出力メソッドの関連付けは、ページ設計時の宣言的コンポーネントの編集で行われました。
- JDeveloperのウィザードおよびダイアログを使用して、アプリケーションおよびプロジェクトを作成する
- 宣言的コンポーネントに対して属性、ファセット、メソッドのメタデータを定義し、宣言的コンポーネントのレイアウトを定義する
- 宣言的コンポーネントを追加するタグ・ライブラリを定義する
- ADF Library JARに対してデプロイメント・プロファイルを作成する
- 宣言的コンポーネントの定義を含むプロジェクトをADF Library JARにデプロイする
- リソース・パレットにファイル・システム接続を追加することで、ADF Library JARを共有する
- 宣言的コンポーネントを使用するプロジェクトとアプリケーションに対して、ADF Library JARを追加する
- 宣言的コンポーネントをJSFページに追加し、変更する
- Create Managed Beanダイアログを使用してマネージドBeanメソッドの追加と関連付けを行う
- Integrated WebLogic Serverを使用してADF Facesアプリケーションを実行する
- Oracle® Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework 11g Release 2 (11.1.2.0.0)
- Oracle® Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework 11g Release 2 (11.1.2.0.0)
