ウィザードを使用して、アプリケーションとプロジェクト、シンプルなレイアウトを使用したJSF初期ページを素早く作成します。 その後、ドラッグとドロップという2つの簡単な操作でドラッグ・コンポーネントとして使用するイメージ・コンポーネントをページに追加します。 ドラッグされたイメージのドロップ・ターゲットとして動作するのは、ページ上の入力テキスト・コンポーネントとリストボックスです。
メイン・メニューから「File」→「New」を選択します。 New Galleryで、「General」を開いて「Applications」を選択します。 Itemsリストで「Custom Application」を選択し、「OK」をクリックします。
JDeveloperアプリケーションは、組織構造の最上位レベルです。 アプリケーションの開発中に、操作しているオブジェクトの情報がここに格納されます。
詳細表示 同時に、プロジェクトとすべての環境設定が追跡記録されます。
Oracle JDeveloperアプリケーションでは、作成するアプリケーションのタイプ(WebアプリケーションやJavaアプリケーションなど)に応じて、あらかじめ構築されたテンプレートに基づいて、事前定義された環境のタイプを指定できます。 アプリケーション・テンプレートには適切な機能の組合せが事前に指定されているため、標準アプリケーションのプロジェクト構造を素早く作成できます。 また、使用している機能に合った選択肢のみが使用できるように、Oracle JDeveloperで実行する処理がアプリケーション・テンプレートによりフィルタリングされます。
このチュートリアルでは、Custom Applicationテンプレートを使用します。このテンプレートでは、JDeveloperがサポートするすべての機能の関連オブジェクトを1つのプロジェクトから使用できます。
適切なテンプレートを使用してアプリケーションを作成した後も、新しいプロジェクトをアプリケーションに追加し、使用できるようにする機能を指定できます。 これを実行するには、アプリケーション・ナビゲータでアプリケーション名を右クリックして、「New Project」を選択します。 New Galleryでは、Itemsリストから任意のタイプのプロジェクトを選択できます。
この例に合わせるため、アプリケーション名としてDndAppと入力し、「Finish」をクリックします。
初期プロジェクト構造(アプリケーション・ワークスペース内の名前付きプロジェクト・フォルダ)および追加されるアプリケーション・ライブラリは、選択したアプリケーション・テンプレートによって決まります。
詳細表示 機能の関連付けは、アプリケーション内のプロジェクトで定義します。
JDeveloperプロジェクトは、関連するファイルを論理的にグループ化するときに使用します。ここでは、ソース・ファイル、パッケージ、クラス、イメージ、およびプログラムで必要になるその他の要素が管理されます。 プロジェクトでは、プログラムのコンパイル時や実行時に使用するソース・パスや出力パスなどの環境変数を管理します。 また、プロジェクトには、コンパイラ、ランタイム、デバッグに関するオプションが用意されており、プロジェクトごとにこれらのツールの動作をカスタマイズできます。
ソース・コードのアクセス、変更、再利用を簡単にするために、複数のプロジェクトをアプリケーションに追加できます。 それぞれのプロジェクトに含まれるファイルは、たとえば多層アプリケーションにおける各層に相当する場合もあれば、複雑なアプリケーションにおける各サブシステムに相当する場合もあります。 これらのファイルはどのディレクトリに配置されていても、1つのプロジェクトに含めることができます。
今作成したプロジェクトをアプリケーション・ナビゲータでダブルクリックしてProject Propertiesダイアログを開きます。 「JSP Tag Libraries」と「Distributed libraries」を選択して「Add」をクリックします。

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

ライブラリは、Oracle JDeveloperとともにインストールされるさまざまなAPIやテクノロジーのために提供されます。
詳細表示
Oracle ADF Facesは、Oracle ADF FacesコンポーネントJSPタグ・ライブラリを提供します。 Oracle ADF Facesコンポーネントのタグ・ライブラリを追加すると、Oracle JDeveloperは、タグ・ライブラリ記述子(TLD)ファイルの名前と場所、タグ・ライブラリの一意の識別子、実行時にタグ・ライブラリからタグを実行するために必要なJavaライブラリの名前、ライブラリがJSPページで使用される際のタグの接頭辞の優先値を追加します。

デフォルトでは、コンポーネント・パレットのADF FacesページにADF Facesタグが表示され、タグ・ライブラリのすべてのタグはJSPビジュアル・エディタで使用可能なシミュレートされたJSP/サーブレット・コンテナで実行されます。 設計時に実行される必要があるタグをカスタマイズするには、Project PropertiesダイアログのJSP Tag Librariesページでタグ・ライブラリを選択して、「Customize」をクリックします。
「
」Save Allをクリックして作業内容を保存します。
アプリケーション・ナビゲータのProjectsパネルは、次のようになります。

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

-
ファイル名としてMyPage.jsfを入力します。 ドキュメント・タイプとしてFaceletsが選択されていることを確認します。
JavaServer Facesを使用するアプリケーション向けに作成するJSFページには、Faceletsドキュメント(ファイル拡張子は.
jsf)、またはXML構文で記述されたJSPドキュメント(ファイル拡張子は
.jspx)を使用できます。
詳細表示
どちらのJSFページもCreate JSF Pageダイアログを使用して作成できます。このダイアログは次のいずれかの方法で開くことができます。
Page Layoutページで「Quick Start Layout」を選択し、「Browse」をクリックします。
-
Component Galleryで、左側にある「Two Column」カテゴリを選択します。 続いて、右側にある3番目のタイプと3番目のレイアウトを選択します。
OptionsボックスにTwo Column Left, Partial Header (Two Splits, Stretched)と表示されます。

Oracle ADF Facesには、ページの全体レイアウトを定義するときに使用できるコンポーネントが多数用意されています。
詳細表示 OracleJDeveloperには、こうしたレイアウト・コンポーネントを使用する事前定義済みのページ・レイアウトが含まれているため、正しいページ・レイアウトを素早く簡単に決定できます。
クイック・スタート・レイアウトのComponent Galleryでは、1列、2列、または3列のレイアウトのいずれかを選択し、列の動作(固定幅にするか拡張できるようにするかなど)を決定できます。 「Apply Themes」チェックボックスを選択することで、選択したクイック・スタート・レイアウトに色とスタイルを追加することもできます。
「OK」をクリックします。
Create JSF Pageダイアログには、選択したクイック・スタート・レイアウトが表示されます。

「Managed Bean」をクリックし、「Do Not Automatically Expose UI Components in a Managed Bean」を選択します。
Create JSF Pageダイアログでは、UIコンポーネントをプログラムで操作できるようにするために、ページ上のUIコンポーネントをマネージドBean内に公開するかどうかをオプションで指定できます。
詳細表示
デフォルトでは、コンポーネントはマネージドBeanに対して公開されません。 コンポーネントをマネージドBeanにバインドする場合は、このダイアログのManaged Beanページでいずれかの自動バインディング・オプションを選択します。
既存のマネージドBeanに対するバインド方法のオプションを選択できるのは、アプリケーションにマネージドBeanが構成されている場合のみです。
UIコンポーネントをマネージドBean内で自動的に公開するように指定すると、新規のJSFページを作成するたびに自動的にバッキングBeanが作成されます。 ページ上にコンポーネントをドロップすると、各コンポーネントにBeanプロパティが挿入され、コンポーネント・インスタンスとプロパティはbinding属性を使用してバインドされます。これにより、Beanでコンポーネント・インスタンスを受け取ったり返したりできるようになります。
注:ページにOracle ADFバインディングを追加する場合は、自動バインディング機能を使用しないでください。 自動バインディング機能を使用した場合は、Oracle ADFバインディングを追加した後でマネージドBeanバインディングを削除することが必要になります。
「OK」をクリックします。
デフォルトでは、ビジュアル・エディタに新しいページが開き、水平パネル・スプリッタのfirstファセットが選択された状態で表示されます。

Quick Start Layoutオプションを使用すると、レイアウトの表示に必要なコンポーネントが追加されます。
詳細表示 ビジュアル・エディタのエディタ・タブ(エディタ・ウィンドウの最下部付近)のすぐ上にあるエディタ・ブレッドクラム・リンクには、現在選択されているコンポーネントからそのルートの親コンポーネントにさかのぼるパスが表示されます。
パスの最後にあるコンポーネント(太字で表示)は現在選択されているコンポーネントです。選択されているコンポーネントの前にあるコンポーネント名が親コンポーネントのパスを構成しています。 パスにある任意のコンポーネントをクリックすると、ページ上のそのコンポーネントが選択されます。
ページ・コードを表示するには、「Source」タブをクリックしてビジュアル・エディタからXMLエディタに切り替えます。 たとえば、Two Column Left, Partial Header (Two Splits, Stretched)レイアウトに対して次のコードが生成されます。
<!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">
<af:document title="MyPage.jsf" id="d1">
<af:form id="f1">
<af:panelSplitter orientation="horizontal" splitterPosition="100"
id="ps1">
<f:facet name="first"/>
<f:facet name="second">
<!-- id="af_twocol_left_partial_header_twosplits_stretched" -->
<af:panelSplitter splitterPosition="50"
orientation="vertical" id="ps2">
<f:facet name="first"/>
<f:facet name="second"/>
</af:panelSplitter>
</f:facet>
</af:panelSplitter>
</af:form>
</af:document>
</f:view>
JSF Faceletsの初期ページ(拡張子.jsf)の構造には、JSF Coreタグ・ライブラリ用のxmlns属性とOracle ADF Facesタグ・ライブラリ用のxmlns属性が1つずつ含まれます。 初期ファイルに含まれるその他の要素はページ・レイアウト用の要素で、具体的には<f:view>と</f:view>に囲まれているすべてが該当します。 ページ・ファイルが作成されると、UIコンポーネントを追加してページ・ソースを操作できます。
「
」Save Allをクリックして作業内容を保存します。
JSFページの作成ステップが完了すると、アプリケーション・ナビゲータにはプロジェクトが次のように表示されます。
詳細表示

プロジェクト内で、Java EE Webモジュール・ディレクトリ構造に準拠するフォルダとファイルは次のとおりです。
Web Contentフォルダ: 作成したページ、およびアプリケーションのクライアント・ブラウザから見える必要があるその他のファイル(スタイルシート・ファイルやイメージなど)が格納されます。
/WEB-INF/フォルダ: 必要なWebアプリケーション・デプロイメント・ディスクリプタ(web.xml)とJSF構成ファイル(faces-config.xml)が格納されます。
web.xmlファイル: アプリケーションのWebアプリケーション・デプロイメント・ディスクリプタです。 これは、アプリケーションの構成コンポーネントを記述したXMLファイルです。初期化パラメータと、サーバーによって実施されるコンテナ管理のセキュリティ制約も、このファイルに記述されています。
faces-config.xmlファイル: バリデータ、コンバータ、マネージドBean、ナビゲーション・ルールといった、JSFアプリケーションの構成リソースを登録する場所です。
trinidad-config.xmlファイル: スキン・ファミリーやページ・アクセシビリティ・サポートのレベルといったOracle ADF Faces機能を構成するファイルです。
ドラッグするUIコンポーネントとして使用するイメージをページに挿入します。 単一のドラッグ・オブジェクトを定義するには、イメージ・コンポーネントに特殊な属性を追加し、新たに追加したこの属性をドラッグ・ソースとして指定します。
-
コンポーネント・パレットのADF Facesページで、LayoutパネルのInteractive Containers and Headersセクションから「
」Panel Boxをドラッグし、ページ左側にある水平パネル・スプリッタのfirstファセットにドロップします。
ファセットにコンポーネントをドラッグすると、Facet firstという名前の長方形の領域が表示されます。これは、今ドラッグしているコンポーネントがそのターゲット内に挿入されることを意味しています。

プロパティ・インスペクタのCommonセクションで、Text属性の値をDrag thisに変更します。

コンポーネント・パレットのGeneral Controls パネルで、先ほど追加したパネル・ボックスに「
」Imageをドラッグ・アンド・ドロップします。
-
Insert Imageダイアログで、Sourceフィールドの横にある「
」ドロップダウン・メニューから「Edit」を選択します。 続いて、ダイアログを使用してイメージ・ファイルを検索し、選択します。

Oracle JDeveloperのイメージ・ライブラリからイメージを選択するには、Edit Propertyダイアログで
<jdev_home>/jdeveloper/ide/lib/フォルダを検索し、「
oicons.jar」をダブルクリックして開きます。
詳細表示 次に、oracle/javatools/icons/headerへ移動してイメージ・ファイル「jdeveloper.png」を選択します。
-
「OK」をクリックします。 プロンプトが表示されたら、「Yes」をクリックしてイメージをリソース・ディレクトリの下に追加し、「Save」をクリックします。
Sourceフィールドに#{resource['images:jdeveloper.png']}と表示されます。

「OK」をクリックして、Insert Imageダイアログを閉じます。
コンポーネント・パレットで、「Operations」パネルを開きます。 追加したばかりのイメージ・コンポーネントに、「
」Client Attributeをドラッグ・アンド・ドロップします。
-
Client Attributeのプロパティ・インスペクタで、次の値を入力します。
| フィールド |
値 |
| Name |
cup |
| Value |
Coffee |
Oracle ADF Facesの
af:clientAttributeタグを使用すると、コンポーネントに追加する属性の名前と値を指定できます。
詳細表示 以下に例を示します。
<af:image source="/jdeveloper.png">
<af:clientAttribute name="cup" value="Coffee"/>
</af:image>
実際のアプリケーションでは、バインド属性を参照するEL式(例:#{bindings.Departmentname.inputValue})をvalue属性に指定します。 EL式は実行時に値として使用されます。
af:clientAttributeをコンポーネントに埋め込むことによって、実行時に、追加した属性がクライアント側およびサーバー側の両方で利用できるようになります。
コンポーネント・パレットのOperationsパネルにあるDrag and Dropセクションで、「
」Attribute Drag Sourceをイメージ・コンポーネントにドラッグ・アンド・ドロップします。
Insert Attribute Drag Sourceダイアログで、Attributeフィールドにcupと入力するか、ドロップダウン・リストから「cup」を選択します。 「OK」をクリックします。

af:attributeDragSourceタグでは、コンポーネント属性をドラッグ・ソースとして使用するように指定できます。
詳細表示
この例では、af:clientAttributeをイメージ・コンポーネントに追加し、af:attributeDragSourceも使用して、追加したこの属性をドラッグ・ソースに指定することによって、実行時にユーザーがイメージをドラッグすると、追加した属性はドラッグ・ソースとして使用されるコンポーネント属性になります。
<af:image source="/jdeveloper.png">
<af:clientAttribute name="cup" value="Coffee"/>
<af:attributeDragSource attribute="cup"/>
</af:image>
注: 既存のコンポーネント属性をドラッグ・ソースとして使用する場合、af:clientAttributeを追加する必要はありません。 たとえば、次のコードでは、出力テキスト・コンポーネントのvalue属性をドラッグ・ソースとして使用しています。
<af:outputText value="Drag me">
<af:attributeDragSource attribute="value"/>
</af:outputText>
単一のオブジェクトは、コンポーネントとその属性の1つをドラッグ値として使用することでドラッグできます。または、表やツリー・コンポーネントなどのオブジェクトのコレクションをドラッグできます。
Oracle ADF Facesでは、その他に、コンポーネントをドラッグ・ソースとして宣言的に有効化するためのaf:componentDragSourceおよびaf:dragSourceという2つのタグが提供されます。 これらのタグの使用方法の詳細は、ADF Faces Tag Referenceドキュメントを参照してください。
「
」Save Allをクリックして作業内容を保存します。
ビジュアル・エディタには次のようなページが表示されます。

アプリケーション・ナビゲータには、プロジェクトで保存したイメージ・ファイルが表示されます。
詳細表示
ドラッグされたコンポーネントを受け取るUIコンポーネントとして使用する入力フィールドを挿入します。 単一のドロップ・ターゲット・オブジェクトを定義するには、ドラッグ・ソースを受け取るためのターゲットとして使用する入力フィールドに、ある属性を指定します。
ビジュアル・エディタで、水平スプリッタ・バーをページの中ほどまで引き下げます。

-
コンポーネント・パレットのADF FacesページにあるLayoutパネルのInteractive Containers and Headersセクションで、ページ右側にあるfirstファセットに「
」Panel Boxをドラッグ・アンド・ドロップします。

プロパティ・インスペクタのCommonセクションで、Textの値をDrop hereに変更します。
-
コンポーネント・パレットのLayoutパネルで、先ほど追加したパネル・ボックス・コンポーネントに「
」panel Group Layoutをドラッグ・アンド・ドロップします。 プロパティ・インスペクタのCommonセクションで、Layoutの値をscrollに変更します。
-
コンポーネント・パレットのText and Selectionパネルで、先ほど追加したパネル・グループ・レイアウト・コンポーネントに「
」Input Textをドラッグ・アンド・ドロップします。 プロパティ・インスペクタのCommonセクションで、Labelの値をCupに変更します。

コンポーネント・パレットのOperationsパネルにあるDrag and Dropセクションで、「
」Attribute Drop Targetを入力テキスト・コンポーネントにドラッグ・アンド・ドロップします。
Insert Attribute Drop Targetダイアログで、Attributeドロップダウン・リストから「value」を選択し、「OK」をクリックします。

af:attributeDropTargetタグには、互換性のある値がターゲット・コンポーネントにドラッグ・アンド・ドロップされたときに設定されるコンポーネント属性(
valueなど)を指定できます。
詳細表示
Structureウィンドウには、ドロップ・ターゲットとして定義したコンポーネントが表示されます。
この例では、af:inputText内にaf:attributeDropTargetを組み込み、ドロップ・ターゲット属性としてvalueを指定しているため、実行時に互換性のあるドラッグ・ソースが入力テキスト・コンポーネントにドロップされると、入力コンポーネントが自動的にリフレッシュされてソースの値が表示されます。
<af:inputText label="Cup"..>
<af:attributeDropTarget attribute="value"/>
</af:inputText>
ドロップ・ターゲットにはコレクション・コンポーネントまたは非コレクション・コンポーネントを使用できます。 たとえば、コンポーネントとその属性の1つをドロップ・ターゲットとして使用することで、単一オブジェクトにドラッグ・アンド・ドロップできます。または、表やツリー・コンポーネントなどのオブジェクトのコレクションにドラッグ・アンド・ドロップできます。
注: 単一オブジェクトをドラッグする場合、そのオブジェクトのドロップ先は別の単一オブジェクトのみになります。 同様に、コレクションをドラッグする場合、そのコレクションのドロップ先は別のコレクションのみになります。 単一オブジェクトをコレクションにドラッグ・アンド・ドロップしたり、その逆をおこなったりすることはできません。
Oracle ADF Facesでは、コンポーネントをドラッグ・ターゲットとして宣言的に有効化するためのaf:collectionDropTarget、af:calendarDropTarget、およびaf:dropTargetという3つのタグが提供されます。 これらのタグの使用方法の詳細は、ADF Faces Tag Referenceドキュメントを参照してください。
-
アプリケーション・ナビゲータで「MyPage.jsf」を右クリックし、「Run」を選択します。
Create Default Domainダイアログが表示されたら、PasswordフィールドとConfirm Passwordフィールドにデフォルト・パスワード(例:weblogic1)を入力し、「OK」をクリックします。
次のようなページがブラウザに表示されます。

デフォルトでOracle JDeveloperは、IDEにバンドルされたOracle WebLogic Serverのユーザー固有のインスタンスを参照する、Integrated WebLogic Serverという名前の統合されたサーバーを自動的に構成します。
詳細表示
Integrated WebLogic Serverは、パッケージ化されたアーカイブ・デプロイメント用のJava EEランタイム・サービスです。 ゼロコピー・デプロイメントに基づき、Integrated WebLogic Serverでは、アプリケーションとそのプロジェクトのJava EEアプリケーションとしての実行とテストをJava EEコンテナ内で行えます。 Integrated WebLogic Serverの使用に際し、特別な接続設定は必要ありません。 アプリケーション全体、プロジェクト、または個別のJSFページを実行できます。
IDEでJSFアプリケーションを実行すると、次の処理が自動的に実行されます。
まだ実行中でない場合は、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>
アプリケーションを終了する場合は、Oracle JDeveloperで「
」Terminateをクリックし、ドロップダウン・メニューからアプリケーション・バウンド・インスタンス「DndApp」を選択します。
注: アプリケーションを終了すると、アプリケーションは停止し、Integrated WebLogic Serverからアンデプロイされますが、Integrated WebLogic Serverは終了されません。
-
イメージをドラッグして、Cup入力フィールドの上に配置します。
カーソルを入力フィールドの上に置くと、フィールドの背景色が変化して、イメージのドロップを受け入れられる領域の上にマウス・カーソルがあることが示されます。
受入れ可能なドロップ・ターゲットの上にマウス・カーソルがない場合、カーソルの形は斜線が入った円形に変わります。
マウス・ボタンを離してイメージを入力フィールドにドロップすると、Coffeeという単語がCup入力フィールドに表示されます。
ドロップ・イベントを処理するためのJavaクラスとリスナー・メソッドを作成します。 クラスは、アノテーションを使用してマネージドBeanとして登録されます。
-
アプリケーション・ナビゲータで「faces-config.xml」をダブルクリックし、エディタ・ウィンドウでファイルを開きます。

-
エディタ・ウィンドウの下部にある「Overview」タブをクリックします。 次に、概要エディタのManaged Beansセクションで、「
」をクリックしてCreate Managed Beanダイアログを開きます。

アプリケーションは、アプリケーション・ページにより表示されるテキストとメッセージを含んだファイルや、アプリケーションが使用するデータを定義するBeanなどの特定のリソースを必要とします。 アプリケーションが必要とするリソースは、JSF構成ファイル
faces-config.xmlに指定されます。
詳細表示
マネージドBeanとは、JSF構成ファイルfaces-config.xmlに登録されているか、または特殊なマネージドBeanアノテーションをBeanクラスに持つすべてのアプリケーションJavaBeansのことです。
注: Oracle ADFデータ・バインディングとタスク・フローも使用するアプリケーションを作成する場合は、マネージドBeanをadfc-config.xmlファイルまたはタスク・フロー定義ファイルのいずれかに追加する必要があります。
このステップでは、ただfaces-config.xmlの概要エディタを使用してCreate Managed Beanダイアログにアクセスするだけで、Oracle JDeveloperが自動的にJavaクラス・ファイルを作成します。
Create Managed Beanダイアログで、次の値を入力するかオプションを選択して、「OK」をクリックします。
| フィールドまたはオプション |
値 |
| Bean Name |
dnd |
| Class Name |
MyPageInfo |
| Package |
project1 |
| Extends |
java.lang.Object |
| Scope |
session |
| Registration |
Annotations |
Bean Name:Beanのインスタンス化に使用するクラスを特定するときにはシンボリック名を使用します。
詳細表示 その後、このシンボリック名を使用してBeanのプロパティとメソッドを参照します。 Beanを直接参照する代わりにシンボリック名を使用しているため、プレゼンテーションがアプリケーション・ロジックと分離され、ビューに影響を及ぼすことなくモデルを変更できます。
Scope:マネージドBeanのスコープによって、Beanが格納されるスコープが決まります。 Beanの有効なスコープは次のとおりです。
application: Webアプリケーションが実行されている間、Beanが使用可能です。 このスコープは、LDAPディレクトリなどのグローバルなBeanに有用です。
session: クライアント・セッションの間、クライアントがBeanを使用できます。
request: インスタンス化されてからクライアントに応答が返されるまで、Beanが使用可能です。 これは通常、現在のページの存続期間です。
none: Beanは参照されるたびにインスタンス化されます。 これは、Beanが別のBean内で参照されている場合に有用です。
Registration:JSF 2.0からは、faces-config.xmlにマネージドBeanを登録するのではなく、BeanクラスでマネージドBeanアノテーションを使用する選択ができるようになりました。 マネージドBeanアノテーションの使用を選択すると、JavaBeansクラス・ファイルにアノテーションが追加されます。 次に例を挙げます。
@ManagedBean(name="backing_mypage")
@RequestScoped
public class MypageInfo {
...
}
faces-config.xmlにJavaBeansを登録することにした場合は、faces-config.xmlファイルが自動的に更新され、必要な構成要素が追加されます。 次に例を示します。
<managed-bean>
<managed-bean-name>dnd</managed-bean-name>
<managed-bean-class>MyPageInfo</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
faces-config.xmlファイルはかなりの大きさになることがありますが、マネージドBeanアノテーションを使用すると、ご覧のとおり、ファイルのサイズと複雑さが減少します。
JSFアプリケーションを起動すると、faces-config.xmlが解析され、登録されているマネージドBean(存在する場合)が使用可能になります。 また、アノテーションによってマークされたJavaBeansがあれば、実行時にマネージドBeanになります。 マネージドBeanが(たとえば、EL式内で値式と呼ばれるコンポーネントのタグ属性の値として)参照されると、マネージドBean作成機能が、そのBeanのデフォルトのコンストラクタ・メソッドを呼び出してBeansをインスタンス化します。 プロパティが宣言されている場合は、それらに宣言済みのデフォルト値が設定されます。
必要に応じてエディタ・ウィンドウの上部にある「MyPageInfo.java」タブをクリックし、ドキュメントを前面に表示します。
Oracle JDeveloperによって追加されたマネージドBeanアノテーションを確認します。
@ManagedBean(name="dnd")
@SessionScoped
public class MyPageInfo implements Serializable {
...
}

ソース・エディタで、編集中に使用できる機能には次のものがあります。
詳細表示
Javaコード・インサイト(コンプリーション・インサイトのJava固有の実装)
一般的な問題を修正するコード・アシスト
インポート文の支援およびソート
自動ドキュメント・コメント・テンプレート
Structureウィンドウのカスタマイズ可能なソートおよび展開
構文エラーおよびセマンティック・エラーの明確なハイライト
カスタマイズ可能なコード・セパレータ
これらの機能の詳細を参照するには、ソース・エディタで[F1]を押します。
ソース・エディタで、ドロップ・イベントを処理するためのカスタム・コードを追加します。
たとえば、ドロップされた値をリストボックス内の項目リストに挿入するコードを追加できます。 そのためには、最初にプロパティを追加して、選択入力コンポーネントを移入するための項目リストを作成するgetterメソッドをさらに追加します。 次に、ドロップ・イベントを処理するためのDndActionメソッドを作成します。
独自のコードを記述する代わりに、用意されているサンプル・コードを使用できます。 ソース・エディタで、生成されたコードをすべて削除し、次のコードに置き換えます。
package project1;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import oracle.adf.view.rich.datatransfer.DataFlavor;
import oracle.adf.view.rich.dnd.DnDAction;
import oracle.adf.view.rich.event.DropEvent;
@ManagedBean(name="dnd")
@SessionScoped
public class MyPageInfo implements Serializable {
public MyPageInfo() {
}
/**
* @return the beverage items
*/
private List<SelectItem> _choices;
public List<SelectItem> getChoices() {
if (_choices == null) {
_choices = new ArrayList<SelectItem>();
_choices.add(new SelectItem("Cocoa", "Cocoa"));
_choices.add(new SelectItem("Tea", "Tea"));
_choices.add(new SelectItem("Wine", "Wine"));
}
return _choices;
}
/**
* Drop event handler
*/
public DnDAction handleItemDrop(DropEvent dropEvent) {
try {
DataFlavor<String> df = DataFlavor.getDataFlavor(String.class);
String droppedValue = dropEvent.getTransferable().getData(df);
if (droppedValue == null) {
return DnDAction.NONE;
} else {
_choices.add(new SelectItem(droppedValue, droppedValue));
}
return DnDAction.COPY;
} catch (Exception ex) {
System.out.println("item drop failed with : " + ex.getMessage());
return DnDAction.NONE;
}
}
}
ドロップ・イベントが発生した場合にカスタム・コードを起動するには、ドロップ・ターゲット・コンポーネントにドロップ・イベント・リスナーを登録します。
詳細表示 ドロップ・イベント・リスナーはマネージドBean内のメソッドで、ドロップ・イベントを操作および処理するカスタム・コードが含まれています。 実行時に、ソース・コンポーネントがターゲット・コンポーネントにドラッグ・アンド・ドロップされると、ドロップ・イベント・リスナー・メソッドが自動的に起動します。
この例では、ドロップされた値をリストボックス内の項目のリストに追加する、ドロップ・イベント・リスナー・メソッドを作成します。 また、リストボックスに項目の初期リストを動的に移入するためのプロパティとgetterメソッドも作成します。
1つ目のメソッドは、javax.faces.model.SelectItemインスタンスのListを返すgetterメソッドです。 これはリストボックス・コンポーネントの移入を行うためのメソッドです。このメソッドは後で追加します。 メソッドを書き込むには、最初にList<SelectItem>型のプロパティを宣言し、次に一連のadd(new SelectItem("some value", "some label"))文を使用してリストを作成します。
2番目のメソッドはドロップ・イベント・リスナー・メソッドです。 ドロップ・イベント・リスナー・メソッドでは、DropEventイベントがパラメータとして取り込まれ、oracle.adf.view.rich.dnd.DndActionが返されます。 次に例を挙げます。
public DnDAction handleDrop(DropEvent dropEvent) {
// handle drop event here
}
ドロップ・イベント・リスナー・メソッドでは、ドロップ・イベントが受け入れられるかまたは拒否されるかを決定し、適切なDndActionを返す必要があります。 受け入れられた場合、有効な値は、COPY、MOVE、LINKのセット(順番は任意)からの1つ以上のNMTOKENSである必要があります。 拒否された場合は、DndAction.NONEが返されます。
ドロップ・メソッド・ロジックでは、ドロップされた値を取得して、SelectItemリストに追加する新しい選択項目の値およびラベルとして使用します。
実行時に項目がリストボックスにドロップされると、リストボックスはリフレッシュされ、新しい項目リストが表示されます。
ドロップ・イベントの転送可能オブジェクトからのデータ取得についての詳細は、JavaDocでoracle.adf.view.rich.event.DropEventおよびoracle.adf.view.rich.datatransferを参照してください。
アプリケーション・ナビゲータで「MyPageInfo.java」を右クリックし、「Make」を選択します。

Messages Logウィンドウに、Successful compilation: 0 errors, 0 warningsというメッセージが表示されます。
新しいドロップ・ターゲットの役割を果たすリストボックス・コンポーネントをページに追加し、ターゲットにリスナー・メソッドを登録します。
エディタ・ウィンドウの上部にある「MyPage.jsf」タブをクリックし、ページを前面に表示します。
コンポーネント・パレットで、ADF FacesページのText and Selectionパネルから「
」Listboxをドラッグし、ページ上のsecondファセットにドロップします。

Insert ListboxダイアログのSelectページで、「Bind to list (select items)」が選択されていることを確認します。 Valueフィールドの横にある「Bind...」をクリックします。

前のステップで作成したドロップ・イベント・リスナー・メソッドでは、ドロップされた値をリストボックス内の項目のリストに追加します。 したがって、このステップでは
af:selectOneListboxコンポーネントを追加してドロップ・ターゲットとして使用します。
詳細表示
af:selectOneListboxコンポーネント(およびその他の類似する選択入力コンポーネント)には、リスト内の項目を表す1つのf:selectItemsコンポーネントを含めることができます。 実行時に項目の初期リストがaf:selectOneListboxコンポーネントに移入されるようにするために、javax.faces.model.SelectItemインスタンスの配列を返すマネージドBean上のgetterメソッドにf:selectItemsコンポーネントを(value属性を使用して)値バインドします。
af:selectOneListboxコンポーネントを追加するとInsert Listboxダイアログが表示されるので、リスト用に個別の静的項目を作成するか、またはマネージドBean経由で動的に移入されるリストにバインドします。 リストを動的に移入できるプロパティとgetterメソッドはマネージドBean内にすでに作成してあるので、ここでは動的リストへのバインドを選択します。
-
Expression Builderで、「JSF Managed Beans」→「dnd」の順で展開します。 「choices」を選択して式#{dnd.choices}を作成し、「OK」をクリックします。
Java EE 5.0およびJSP 2.1で導入された統合式言語(EL)は、JSP 2.0により提供される式言語とJSFテクノロジー1.0用に作成された式言語を統合したものです。
詳細表示 この統合ELにより、ページの作成者は引き続きEL式を使用して、UIコンポーネント値とオブジェクトをバッキングBeanプロパティにバインドするか、バッキングBeanメソッドをUIコンポーネント・タグから参照できます。
統合ELには、値式とメソッド式の2種類の式が定義されています。 値式により、Beanのプロパティから外部オブジェクト上のデータの取得および設定の両方が可能になり、リスト、マップ、配列、暗黙的オブジェクト、リソース・バンドルを参照できます。 メソッド式はコンポーネント・イベントを処理するメソッドか、またはコンポーネント・データを検証あるいは変換するメソッドを参照します。
値式
値式の構文は、JSP 2.0式言語で使用される構文に準拠しています。 値式の例は、以下のとおりです。
メソッド式
メソッド式では以下のパターンのいずれかを使用する必要があります。
#{expression.value}
#{expression[value]}
expressionには、前の値式の項にあげた任意のEL式を使用できます。valueには、式に含まれるオブジェクトのメソッド名に一致する識別子を指定する必要があります。
演算子
式言語は.および[]演算子に加え、次の演算子を提供します。
算術: +、-(二項)、*、/およびdiv、%およびmod、-(単項)
論理: and、&&、or、||、not、!
関係: ==、eq、!=、ne、<、lt、>、gt、<=、ge、>=、le。 比較は、別の値に対してか、またはブール、文字列、整数、および浮動小数点リテラルに対して行うことができます。
Empty: empty演算子は値がnullまたは空白であるかどうかを判断するのに使用できる前置演算子です。
条件: A ? B : C。 Aの評価結果に基づいて、BまたはCを評価します。
次に、「Finish」をクリックしてリストボックスの挿入を完了します。

単一選択リストボックス・コンポーネントのプロパティ・インスペクタのCommonセクションで、Labelの値をBeverage choicesに変更し、[Enter]を押します。
ビジュアル・エディタには次のようなページが表示されます。

コンポーネント・パレットのOperationsパネルのDrag and Dropセクションにある「
」Drop Targetを、ページ上の単一選択リストボックス・コンポーネントにドラッグ・アンド・ドロップします。
ドロップ操作の発生時に実行するカスタム・コードがある場合は、コンポーネントとともに
af:dropTargetタグを使用して、そのコンポーネントでドロップを受け入れられるようにすることができます。
詳細表示
af:dropTargetタグにあるdropListener属性を使用すると、カスタムのドロップ・イベント・リスナー・メソッドをドロップ・ターゲットに登録できます。
Insert Drop Targetダイアログで、DropListenerフィールドの横にある「
」ドロップダウン・メニューから「Edit」を選択します。
Edit Propertyダイアログで、Managed Beanドロップダウン・リストから「dnd」を選択し、Methodドロップダウン・リストから「handleItemDrop」を選択します。 「OK」をクリックします。
DropListenerフィールドに#{dnd.handleItemDrop}と表示されます。
「OK」をクリックして、Insert Drop Targetダイアログを閉じます。
Insert Data Flavorダイアログで、FlavorClassフィールドにjava.lang.Stringと入力して、「OK」をクリックします。

異なる型のオブジェクトがドロップ・ターゲットに受け入れられるようにするには、
af:dataFlavorタグを
af:dropTargetタグとともに使用して、
詳細表示 1つ以上のデータ・フレーバ(java.lang.Stringやjava.util.Collectionなど)を指定します。
ドラッグ・ソースとして使用しているクライアント属性値がStringであるため、この例ではデータ・フレーバjava.lang.Stringを指定しています。
バインドした後、単一選択リストボックス・コンポーネントのコード全体は次のようになります。
<af:selectOneListbox label="Beverage choices"..>
<f:selectItems value="#{dnd.choices}"../>
<af:dropTarget dropListener="#{dnd.handleItemDrop}">
<af:dataFlavor flavorClass="java.lang.String"/>
</af:dropTarget>
</af:selectOneListbox>
アプリケーション・ナビゲータで「MyPage.jsf」を右クリックし、「Run」を選択します。
ブラウザには次のようなページが表示されます。

イメージをドラッグして、Beverage choicesのリストの上にドロップします。
ドロップ操作が正常に完了すると、部分ページ・レンダリングによってドロップ・ターゲットがレンダリングされ、既存のBeverage choicesリストに新しい項目Coffeeが追加されてリストボックスに表示されます。
このチュートリアルでは、コンポーネント属性を使用してドラッグ・アンド・ドロップを実装しました。 このチュートリアルで学習した内容は、以下のとおりです。
- Oracle JDeveloperのウィザードおよびダイアログを使用して、アプリケーションおよび初期ページを作成する
- ビジュアル・エディタ、コンポーネント・パレット、プロパティ・インスペクタ、構造ウィンドウを使用して、UIページを作成する
- コンポーネントにクライアント属性を追加する
- 単一のコンポーネント属性をドラッグ・ソースまたはドロップ・ターゲットとして指定する
- ドロップ操作を処理するためのカスタム・コードを起動するドロップ・イベント・リスナー・メソッドを作成する
- Integrated WebLogic Serverを使用してOracle ADF Facesアプリケーションを実行する
Oracle ADF Facesの使用について、詳しくは以下を参照してください。
すべて表示 |
すべて非表示
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.