JDeveloper 11g によるリッチクライアント開発

第4章 テーブルを使用したアプリケーションの作成

日本オラクル株式会社 セールスコンサルティング統括本部
Fusion Middleware SC本部 Fusion Middleware レディネス部
智野 潤子 (ちの じゅんこ)

この章では、ファイルの情報をテーブル形式で表示する簡単なアプリケーションをとおして、ADF Faces Rich Clientによるアプリケーション開発をチュートリアル形式で説明します。
このチュートリアルで作成するアプリケーションは、次のような機能を持っています。

図1 チュートリアルで作成するアプリケーション
図1 チュートリアルで作成するアプリケーション

なお、このチュートリアルでは、開発環境としてOracle JDeveloper 11g(以下JDeveloper)を使用します。JDeveloperのインストールおよびチュートリアルを実行するために必要な設定は、 第3章「Oracle JDeveloperのインストール」を参照してください。

目次

Part1

Part2

  • ソート機能の追加
  • 行の選択
  • ポップアップ・メニューの追加と実装
  • Excelファイルへのエクスポート

アプリケーションとプロジェクトの作成

JDeveloperでアプリケーションを開発するには、最初に「アプリケーション」と「プロジェクト」を作成します。それぞれの役割は次のとおりです。

  • プロジェクト
    プロジェクトは、開発を進める上で必要なファイルをグループ化するためのコンテナの役割を持っています。例えば、JSFによるWebアプリケーションを開発するためのプロジェクトには、JSPやJavaのソース・ファイルのほかにデプロイメント・ディスクリプタ(web.xml)やJSF構成ファイル(faces-config.xml)などが含まれます。また、プロジェクトはファイルのリストのほかにクラスパスやコンパイラなどの設定情報も管理します。これらの情報は、ファイルの新規作成や保存、コンパイル、デバッグなどを行う際に使用されます。
  • アプリケーション
    プロジェクトが関連するファイルをグループ化するのに対し、アプリケーションは関連するプロジェクトをグループ化するコンテナです。開発するアプリケーション1つに対してJDeveloperのアプリケーションを1つ作成します。また、アプリケーションをデプロイするための構成(Java EEアプリケーションのデプロイメント・ディスクリプタapplication.xmlやEARファイルのパッケージングの情報など)もアプリケーションによって管理されます。

プロジェクトは開発するアプリケーションの要件に応じて柔軟に構成することができますが、関連するモジュールごとにプロジェクトを作成することが推奨されます。例えば、データベースにアクセスするJSFベースのアプリケーションを構成する場合は、データベース・アクセスのためのソースを管理するプロジェクトとJSFを構成するJSPやManaged Beanのソースを管理するプロジェクトの2つを作成することで、開発に必要なリソースが階層的に分類されるので、作業効率が向上します。

アプリケーションの作成

アプリケーションを作成するには、JDeveloperの画面左上に表示されているアプリケーション・ナビゲータで[新規アプリケーション]を選択します(図2、図3)。

図2 新規アプリケーションの作成(JDeveloperのインストール直後)
図2 新規アプリケーションの作成(JDeveloperのインストール直後)

図3 新規アプリケーションの作成(既存のアプリケーションを開いている場合)
図3 新規アプリケーションの作成(既存のアプリケーションを開いている場合)

アプリケーションを作成するための[アプリケーションの作成]ダイアログが表示されたら、表1のように入力します。

表1 [Create Application]ダイアログへの入力値
入力項目 入力する値 説明
アプリケーション名 TutorialApp1 アプリケーションの名前
ディレクトリ (デフォルト値を使用) アプリケーションのファイルを保存するディレクトリを指定
アプリケーション・パッケージの接頭辞 tutorial 作成するJavaクラスのデフォルトのパッケージ名
アプリケーション・テンプレート Fusion Webアプリケーション(ADF) 作成するアプリケーションのテンプレートを選択(今回選択した「Fusion Webアプリケーション(ADF)」は、Oracle ADFを使用したWebアプリケーション用のテンプレート)

図4 [アプリケーションの作成]ダイアログ
図4 [アプリケーションの作成]ダイアログ

[アプリケーションの作成]ダイアログで[OK]ボタンをクリックすると、アプリケーションTutorialApp1が生成されます。

JDeveloperのIDE

JDeveloperのIDE(統合開発環境)は、多数のウィンドウで構成されます。アプリケーションが作成された直後のJDeveloperは5つのウィンドウで構成されています。それぞれのウィンドウは、表2のような機能を提供します。

表2 JDeveloperを構成するウィンドウ
ウィンドウ名 機能概要
アプリケーション・ナビゲータ プロジェクトを構成するソース・ファイルにアクセスするためのウィンドウ
構造ウィンドウ 作業中のソース・ファイルの構造を階層的に表示
エディタ・ウィンドウ JavaやJSP、HTMLなどのソース・ファイルを編集したり、ヘルプなどを参照したりするためのウィンドウ。アプリケーションの作成直後は、ソース・ファイルのステータス(構文エラーや警告の有無など)を一覧表示
リソース・パレット データベースやアプリケーション・サーバーなどの外部リソースへのアクセス情報を管理
ログ・ウィンドウ コンパイルや実行時の警告やエラーなどのメッセージを表示

図5 アプリケーション作成直後のJDeveloper
図5 アプリケーション作成直後のJDeveloper

作成されたプロジェクト

アプリケーションTutorialApp1が作成されると、アプリケーション・ナビゲータは図6のように表示されます。TutorialApp1は、テンプレート「Fusion Webアプリケーション(ADF)」に基づいて作成されたため、ModelとViewContorollerという2つのプロジェクトが作成されています。

図6 アプリケーション・ナビゲータ
図6 アプリケーション・ナビゲータ

Modelプロジェクト

ADF Business Componentsを使用したデータベース・アクセス・コンポーネントを作成するためのプロジェクトです。このチュートリアルでは、[アプリケーションの作成]ダイアログの[アプリケーション・パッケージの接頭辞]で「tutorial」を指定したので、Modelプロジェクトに作成されるJavaクラスのパッケージ名のデフォルト値は「tutorial.model」に設定されています。

ViewController

JSFによるWebモジュールを構成するJSPファイルやCSS(カスケーディング・スタイル・シート)、Managed Beanなどを作成するためのプロジェクトです。作成されるJavaクラスのパッケージ名のデフォルト値は「tutorial.view」に設定されています。また、ViewControllerプロジェクトには、表3の4つのファイルが生成されています。

表3 ViewControllerプロジェクトに生成されるファイル
ファイル名 説明
adfc-config.xml ADF Task Flowの構成ファイル(このチュートリアルでは使用しない)
faces-config.xml JSF構成ファイル。Default Render Kitとして「oracle.adf.rich」が指定されている
trinidad-config.xml アクセシビリティの設定や使用するスキンなどを記述するADF Faces Rich Clientの構成ファイル
web.xml Webデプロイメント・ディスクリプタ。ADF Faces Rich Clientの実行に必要なServletやServlet Filterなどの構成が事前定義されている

Javaクラスの作成とManaged Beanの登録

この節では、個々のファイルの情報(名前やサイズなど)を表すFileItemクラスと、Managed Beanとして動作するFileServiceクラスの2つのJavaクラスをViewControllerプロジェクトに作成します。

FileItemクラスの作成

最初にFileItemクラスを作成し、実装します。JDeveloperでJavaクラスを作成するには、アプリケーション・ナビゲータで「ViewController」を右クリックし、コンテキスト・メニューから[新規]を選択して[新規ギャラリ]ウィンドウを起動します。

図7 プロジェクトのコンテキスト・メニューから[New]を選択
図7 プロジェクトのコンテキスト・メニューから[New]を選択

[新規ギャラリ]ウィンドウが起動されたら、画面左の[カテゴリ]ツリーから[一般]を選択し、画面右の[アイテム]リストから[Javaクラス]を選択します。

図8 [新規ギャラリ]ウィンドウで[Javaクラス]を選択
図8 [新規ギャラリ]ウィンドウで[Javaクラス]を選択

[新規ギャラリ]ウィンドウで[OK]ボタンをクリックすると、[Javaクラスの作成]ダイアログが起動されるので、表4のように入力します。

表4 [Javaクラスの作成]に入力する値
入力項目
名前 FileItem
パッケージ tutorial.view(デフォルト値)
拡張 java.lang.Object(デフォルト値)
オプション属性 [public]と[デフォルトのコンストラクタの生成]をチェック

図9 [Javaクラスの作成]ダイアログ
図9 [Javaクラスの作成]ダイアログ

[Javaクラスの作成]ダイアログで[OK]ボタンをクリックすると、ViewControllerプロジェクトにFileItem.javaが追加され、アプリケーション・ナビゲータは図10のような状態になります。

図10 FileItem.javaが追加された直後のアプリケーション・ナビゲータ
図10 FileItem.javaが追加された直後のアプリケーション・ナビゲータ

メンバー変数の追加

FileItem.javaが生成されると、エディタ・ウィンドウにソースが表示されるので、表5の4つのメンバー変数を追加します。

表5 FileItemクラスのメンバー変数
メンバー変数名 説明
name java.lang.String ファイル名
size java.lang.Integer ファイル・サイズ
type java.lang.String ファイルの種類
lastModified java.util.Date 更新日時

メンバー変数を追加するとFileItem.javaのエディタ・ウィンドウは図11のような状態になります。

図11 FileItem.javaのソース
図11 FileItem.javaのソース

NOTE
Javaソース・エディタの右マージンには黄色や赤色の四角が表示されることがあります。黄色の四角は警告、赤色の四角は構文エラーがあることを表しており、マウス・ポインタを合わせると警告やエラーの内容がポップアップで表示され、クリックすると該当の行にカーソルが移動します。
ソース・エディタの左マージンにはコード・アシストという機能によって電球の形をしたアイコンが表示されることがあります。電球アイコンをクリックすると警告に対する修正など、コーディング支援機能を使用できます。
また、左マージンを右クリックし、コンテキスト・メニューから[行番号の設定]を選択すると行番号が表示されます。

アクセッサ・メソッドの追加

メンバー変数を追加したら、アクセッサ・メソッド(getXXXメソッドとsetXXXメソッド)を追加します。

図12 [アクセッサの生成]ボタンをクリック
図12 [アクセッサの生成]ボタンをクリック

エディタ・ウィンドウ上部のツールバーの[アクセッサの生成]ボタンをクリックすると、[アクセッサの生成]ダイアログが起動されます。画面右側の[すべて選択]ボタンをクリックし、 [メソッド]ツリーのすべてのメソッドがチェックされていることを確認したら、[OK]ボタンをクリックします。

図13 [アクセッサの生成]ダイアログ
図13 [アクセッサの生成]ダイアログ

[アクセッサの生成]ダイアログで、[OK]ボタンをクリックすると、FileItem.javaにsetNameやgetNameなど8つのメソッドが追加されます。

Javaソースの保存とコンパイル

FileItemクラスにメンバー変数とそれぞれのアクセッサ・メソッドを追加したら、FileItem.javaを保存するためにツールバーの[すべて保存]ボタンをクリックします。

図14 ツールバーの[すべて保存]ボタンをクリック
図14 ツールバーの[すべて保存]ボタンをクリック

次に、FileItem.javaをコンパイルするために、ツールバーの[メイク]ボタンをクリックします。

図15 ツールバーの[メイク]ボタンをクリック
図15 ツールバーの[メイク]ボタンをクリック

NOTE
コンパイル・エラーが発生した場合は、ログ・ウィンドウの[コンパイラ]タブ・ページにエラー・メッセージが表示されます。エラー・メッセージをダブルクリックすると、該当する箇所にカーソルが移動します。
図16 ログ・ウィンドウにコンパイル・エラーが表示された状態
図16 ログ・ウィンドウにコンパイル・エラーが表示された状態

FileServiceクラスの作成

次に、JSFのManaged Beanとして動作するFileServiceクラスを作成し、実装します。

Managed Beanの登録とJavaクラスの生成

JSFのManaged Beanは、JSF構成ファイルに登録する必要があります。JDeveloperでは、Managed Beanの登録と同時に、その実装クラスのソースを生成することができます。
アプリケーション・ナビゲータでfaces-config.xmlをダブルクリックすると、画面遷移をビジュアルに定義するためのダイアグラム・モードで表示されるので、エディタ・ウィンドウ下部の[概要]タブをクリックします。

図17 エディタ・ウィンドウの[Overview]タブをクリック
図17 エディタ・ウィンドウの[Overview]タブをクリック

[概要]タブをクリックすると、faces-config.xmlが概要モードで表示されます。概要モードは、Managed Beanや開発者が作成したバリデータ、コンバータの登録など、JSF構成ファイルを宣言的に編集するためのインタフェースを提供します。Managed Beanを登録するには、画面左の[Managed Beans]タブを選択してから、画面右上の[+]ボタンをクリックします。

図18 概要モードの[マネージドBean]ページで[+]ボタンをクリック
図18 概要モードの[マネージドBean]ページで[+]ボタンをクリック

[+]ボタンをクリックすると、Managed Beanの情報を入力するための[マネージドBeanの作成]ダイアログが起動されるので、表6のように入力します。

表6 [マネージドBeanの作成]ダイアログに入力する値
入力項目
Bean名 file_service
クラス名 FileService
パッケージ tutorial.view
拡張 java.lang.Object(デフォルト値)
有効範囲 「session」に変更
クラスが存在しない場合は生成 チェックする

図19 [マネージドBeanの作成]ダイアログ
図19 [マネージドBeanの作成]ダイアログ

[マネージドBeanの作成]ダイアログで[OK]ボタンをクリックすると、FileService.javaのソースが生成され、faces-config.xmlにはManaged Beanが登録されています。

メンバー変数とアクセッサ・メソッドの追加

生成されたFileServiceクラスには、2つのメンバー変数を追加します。エディタ・ウィンドウで[FileService.java]タブをクリックし、表7の2つを登録してください。

表7 FileServiceクラスのメンバー変数
メンバー変数名 説明
fileItems java.util.List<FileItem> ファイルのリストを格納
selectedItem tutorial.view.FileItem テーブルで選択されているファイルを格納

図20 FileService.javaのソース
図20 FileService.javaのソース

メンバー変数を追加したら、FileItemクラスと同様に[アクセッサの生成]ボタンをクリックしてアクセッサ・メソッドを生成します。

コンストラクタの実装

FileServiceクラスのコンストラクタでは、テーブルに表示するファイルのリスト(メンバー変数fileItems)を初期化します。このチュートリアルでは、プログラムで擬似的なファイルのリストを作成することにします。java.util.ArrayListおよびjava.util.Dateをインポートし、コンストラクタをコード1のように実装してください。

コード1 FileServiceクラスのコンストラクタ

public FileService() {
                                

  fileItems = new ArrayList<FileItem>(100);
                                

  selectedItem = null;
                                

  for (int i = 0; i < 100; i++) {
                                

    FileItem item = new FileItem();
                                

    switch (i % 4) {
                                

      case 1: {
                                

        item.setName("File" + i + ".html");
                                

        item.setType("HTMLファイル");
                                

        break;
                                

      }
                                

      case 2: {
                                

        item.setName("File" + i + ".xsl");
                                

        item.setType("XSLファイル");
                                

        break;
                                

      }
                                

      case 3: {
                                

        item.setName("File" + i + ".pdf");
                                

        item.setType("PDFファイル");
                                

        break;
                                

      }
                                

      default: {
                                

        item.setName("File" + i + ".doc");
                                

        item.setType("ドキュメント・ファイル");
                                

        break;
                                

      }
                                

    }
                                

    item.setLastModified(new Date());
                                

    item.setSize((i + 1) * 10);
                                

    fileItems.add(item);
                                

  }
                                

}
                              

FileService.javaの編集が終わったら、保存しプロジェクトをメイクしてください。

JSFページの作成

この項では、ADF Faces Rich Clientのタグを記述するJSFページ(index.jspx)を作成し、タブ区切りパネルを追加します。

JSFページの作成

JSFページは、「 Javaクラスの作成とManaged Beanの登録」の「FileItemクラスの作成」でFileItemクラスを作成した時と同様に、[新規ギャラリ]ウィンドウを使用して作成することもできますが、このチュートリアルではダイアグラムを使用して作成する手順を紹介します。
まず、faces-config.xmlをダイアグラム・モードで開きます(エディタ・ウィンドウで[Diagram]をクリックした状態)。faces-config.xmlをダイアグラム・モードで開くと、エディタ・ウィンドウの右側にはコンポーネント・パレットが表示されます。JDeveloperでは、コンポーネント・パレットに表示された要素をダイアグラムにドラッグ&ドロップすることで画面遷移をビジュアルに定義することができます。
コンポーネント・パレット上部のドロップダウン・リストで[JSFダイアグラム・オブジェクト]を選択し、[Components]パネルの[JSF Page]をエディタ・ウィンドウへドラッグ&ドロップします。

図21 JSFページをドラッグ&ドロップ
図21 JSFページをドラッグ&ドロップ

エディタ・ウィンドウに[JSF Page]をドロップすると、ダイアグラムに[untitled1.jsp]が追加されます。[untitled1.jsp]をダブルクリックすると、[JSFページの作成]ダイアログが表示されるので、表8のように入力します。

表8 [JSFページの作成]ダイアログに入力する値
入力項目 入力する値
ファイル名 index.jspx
ディレクトリ (デフォルト値を使用)
ページ・テンプレートの使用 「テンプレートを使用しません」を選択
XMLドキュメントの作成(*.jspx) チェックする

図22 [JSFページの作成]ダイアログ
図22 [JSFページの作成]ダイアログ

[JSFページの作成]ダイアログの[OK]ボタンをクリックするとViewControllerプロジェクトにindex.jspxが生成され、エディタ・ウィンドウで設計モード(エディタ・ウィンドウ下部の[設計]タブが選択された状態)で表示されます。コンポーネント・パレットにはJSFタグがアコーディオン・パネルによってカテゴリごとに表示されており、ドラッグ&ドロップでJSFページに追加できるようになります。
また、コンポーネント・パレットの下部にプロパティ・インスペクタが表示されます。プロパティ・インスペクタは、エディタ・ウィンドウまたは構造ウィンドウで選択されているタグの属性がカテゴリごとに分類され、簡単に編集できます。

図23 index.jspxが生成された直後のJDeveloper
図23 index.jspxが生成された直後のJDeveloper

NOTE
プロパティ・インスペクタが表示されない場合は、メイン・メニューから[表示]→[プロパティ・インスペクタ]を選択してください。

ページ・タイトルの設定

index.jspxが生成されると、構造ウィンドウには図24のようにindex.jspxに記述されているタグの階層がツリー形式で表示されるので、[af:document]をクリックします。

図24 構造ウィンドウで[af:document]をクリック
図24 構造ウィンドウで[af:document]をクリック

NOTE
構造ウィンドウが表示されていない場合は、JDeveloperのメニューバーで[表示]→[構造]を選択してください。また、構造ウィンドウにindex.jspxの構造が表示されていない場合は、アプリケーション・ナビゲータでindex.jspxを選択してください。

構造ウィンドウで[af:document]を選択すると、プロパティ・インスペクタでaf:documentタグの属性を編集できるようになります。ページ・タイトルを指定するために、[Common]カテゴリの[Title]に「チュートリアル」と入力します。

図25 プロパティ・インスペクタで[Title]の値を指定
図25 プロパティ・インスペクタで[Title]の値を指定

JSFページのエンコーディングの設定

この項では、JSFページのエンコーディングをUTF-8に変更します。ADF Faces Rich Clientは、JavaScriptのXmlHttpRequestによる非同期通信を使用して部分ページ・レンダリングを実現しています。UTF-8以外のエンコーディングを使用した場合、使用するWebブラウザによってはマルチバイト文字が文字化けすることがあるため、ADF Faces Rich Clientを使用したJSFページではUTF-8の使用が推奨されます。
作成したindex.jspxを表示するエディタ・ウィンドウで[Source]タブをクリックしてソース・モードで開き、XML宣言のencoding属性およびJSPディレクティブのcontentType属性(コード2の網掛けされた部分)をUTF-8に変更してください。

コード2 index.jspxのソースの編集

<?xml version='1.0' encoding='
                                 UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
  <jsp:directive.page contentType="text/html;charset=
                                 UFF-8"/>
  <!-- 以下省略 -->
                              

変更を保存すると、JDeveloperによってJSFページのエンコーディングが適切に変換されます。

タブ区切りパネルの追加

この項では、作成したindex.jspxにタブ区切りパネルを追加します。まず、index.jspxを再びデザイン・モードで表示します。コンポーネント・パレット上部のドロップダウン・リストで[ADF Faces]を選択し、[Layout]パネルから[パネル・タブ]をエディタ・ウィンドウにドラッグ&ドロップします。

図26 [パネル・タブ]をドラッグ&ドロップ
図26 [パネル・タブ]をドラッグ&ドロップ

[パネル・タブ]をエディタ・ウィンドウにドロップすると、index.jspxにはaf:panelTabbedタグが追加され、エディタ・ウィンドウは図27のように表示されます。

図27 [パネル・タブ]をドラッグ&ドロップした直後のエディタ・ウィンドウ
図27 [パネル・タブ]をドラッグ&ドロップした直後のエディタ・ウィンドウ

このチュートリアルでは追加されたaf:panelTabbedタグに対して、次の設定をします。

  • 幅と高さの指定
  • タブのテキストを変更

幅と高さの指定

追加したタブ区切りパネルの幅と高さはaf:panelTabbedタグのinlineStyle属性にCSSの形式で指定します。
構造ウィンドウで[af:panelTabbed]を選択し、af:panelTabbedタグの属性を編集するためのプロパティ・インスペクタを開きます。[Style]カテゴリを開くと、[テキスト]、[背景]、[ボックス]、[分類]の4つのタブが表示されているので、[ボックス]タブを選択し、次のように指定します。

  • [Width]に「100」と入力し、左のドロップダウン・リストで「Percent」を選択
  • [Height]に「500」と入力し、左のドロップダウン・リストで「Pixel」を選択

これによりプロパティ・インスペクタの[Style]タブ・ページの「InlineStyle」には、「width:100%; height:500px;」と表示されます(図28)。

図28 af:panelTabbedタグの幅と高さを指定
図28 af:panelTabbedタグの幅と高さを指定

タブのテキストを変更

[パネル・タブ]をエディタ・ウィンドウにドロップすると、af:panelTabbedタグの中には自動的にaf:showDetailItemタグが追加されています。af:showDetailItemタグの中には、各タブ・ページのコンテンツを記述します。
タブに表示されるテキストは、af:showDetailItemタグのtext属性で指定します。af:showDetailItemタグのプロパティ・インスペクタで[Common]カテゴリを開き、[Text]に「ファイル一覧」と入力します。

図29 af:showDetailItemタグのtext属性を指定
図29 af:showDetailItemタグのtext属性を指定

テーブルの追加とテスト実行

この節では、「 Javaクラスの作成とManaged Beanの登録」で作成したFileServiceクラスのgetFileItemsメソッドで取得した値を表示するテーブルをindex.jspxに追加します。また、JDeveloperでJSFページを実行する方法についても説明します。 この節の手順を実行すると、JSFページは次のように表示されます。

図30 この節の手順の実行結果
図30 この節の手順の実行結果

テーブルの追加

コンポーネント・パレットの[ADF Faces]ページの[Common Components]パネルから、[Table]をエディタ・ウィンドウのタブ区切りパネル内部にドラッグ&ドロップします。

図31 [Table]をドラッグ&ドロップ
図31 [Table]をドラッグ&ドロップ

エディタ・ウィンドウに[Table]がドロップされると、Managed Beanからテーブルに表示するデータを選択するための[ADF Faces Tableの作成]ダイアログが表示されるので、[データを今すぐバインド]をチェックします。

図32 [ADF Faces Tableの作成]ダイアログ
図32 [ADF Faces Tableの作成]ダイアログ

[表データ・コレクション]フィールドの右の[参照]ボタンをクリックすると、[表データ・コレクションの選択]ダイアログが表示されます。画面左下のツリーから[JSF Managed Beans]→[file_service]→[fileItem]を選択してから[式に挿入]ボタンをクリックします。これにより、画面上部の[式]フィールドに「#{file_service.fileItem}」と表示されます。

図33 [表データ・コレクションの選択]ダイアログ
図33 [表データ・コレクションの選択]ダイアログ

[表データ・コレクションの選択]ダイアログで[OK]ボタンをクリックすると、[ADF Faces Tableの作成]ダイアログの[要素タイプ]の値に「tutorial.view.FileItem」が設定され、[列]にはFileItemクラスで定義したメンバー変数に基づいて4つの列が自動的に設定されたことを確認し、[OK]ボタンをクリックします。

図34 [ADF Faces Tableの作成]ダイアログ
図34 [ADF Faces Tableの作成]ダイアログ

[ADF Faces Tableの作成]ダイアログで[OK]ボタンをクリックすると、エディタ・ウィンドウは図35のように表示されます。

図35 [Table]をドロップした直後のエディタ・ウィンドウ
図35 [Table]をドロップした直後のエディタ・ウィンドウ

アプリケーションのテスト実行

JDeveloperにはWebLogic Serverが統合されているので、作成したWebアプリケーションをその場で実行することができます。ここでは、作成したJSFページindex.jspxを実行してみましょう。
index.jspxを実行するには、index.jspxがエディタ・ウィンドウで表示されている状態でツールバーの[プロジェクトの実行]ボタン(緑色の三角のボタン)をクリックします。

図36 アプリケーションの実行
図36 アプリケーションの実行

[プロジェクトの実行]ボタンをクリックすると自動的にWebLogic Serverが起動し、作成したアプリケーションをEARにパッケージングしてデプロイします。WebLogic ServerのステータスおよびJSFページのURLはログ・ウィンドウに表示されます。

図37 ログ・ウィンドウ
図37 ログ・ウィンドウ

アプリケーションのデプロイが完了するとと、自動的にWebブラウザにindex.jspxが表示されます。列の幅の変更や並べ替えができることを確認してみてください。

図38 実行画面
図38 実行画面

アプリケーション/WebLogic Serverの停止

作成したindex.jspxの動作確認が終わったらアプリケーションまたはWebLogic Serverを停止します。ツールバーの[終了]ボタン(赤い四角のボタン)をクリックすると[Default Server]と[TutorialApp1]の2つのメニューが表示されます。

  • [Default Serever]を選択 -- アプリケーションを停止しアンデプロイしてから、WebLogic Serverを停止
  • [TutorialApp1]を選択 -- アプリケーションを停止しアンデプロイ。ただし、WebLogic Serverは停止しない

図39 埋込みOC4Jサーバーの停止
図39 埋込みOC4Jサーバーの停止

af:panelCollectionタグの追加

af:panelCollectionタグは、テーブルおよびツリー、ツリー・テーブルを配置するためのパネルです。第3章で紹介したADF Faces Rich Clientのデモ・アプリケーションのFile Explorerデモでは、テーブルの列を操作する[ビュー]メニューや[連結解除]ボタンが提供されていましたが、それらはaf:panelCollectionタグによって提供された機能です。
af:panelCollectionタグはaf:tableタグの外側に記述する必要があるため、構造ウィンドウで[af:table]タグを右クリックし、コンテキスト・メニューから[囲む]を選択します。

図40 af:tableのコンテキスト・メニューから[Surround With]を選択
図40 af:tableのコンテキスト・メニューから[Surround With]を選択

これにより、[囲む]ダイアログが表示されるので、画面上部のドロップダウン・リストで[ADF Faces]を選択し、[パネル・コレクション]を選択します。

図41 [囲む]ダイアログで[パネル・コレクション]を選択
図41 [囲む]ダイアログで[パネル・コレクション]を選択

[囲む]ダイアログで[OK]ボタンをクリックすると、af:tableタグの外側にaf:panelCollectionタグが追加されます。埋込みOC4Jサーバーでindex.jspxを実行すると、[ビュー]メニューや[連結解除]ボタンが使用可能になっています。

図42 実行画面
図42 実行画面

列の書式のカスタマイズ

この節では、次のような各列の書式をカスタマイズする方法を説明します。

  • 列ヘッダー・テキストの変更
  • 列の幅の初期サイズの変更
  • 行揃えの指定
  • 数値データのフォーマットの変更
  • 日付データのフォーマットの変更

この節の手順を実行すると、JSFページは次のように表示されます。

図43 この節の手順の実行結果
図43 この節の手順の実行結果

列ヘッダー・テキストの変更

列ヘッダーに表示されるテキストは、columnタグのheaderText属性で指定します。エディタ・ウィンドウで[Name]列を選択した状態でプロパティ・インスペクタの[Common]カテゴリの[HeaderText]を「Name」から「名前」に変更します。

図44 プロパティ・インスペクタで[Header Text]の値を編集
図44 プロパティ・インスペクタで[Header Text]の値を編集

同様に、他の3つの列も表9のように変更します。

表9 列ヘッダーのテキストの変更
変更前 変更後
Size サイズ
Type 種類
Last Modified 更新日時

列の幅の初期サイズの変更

列の幅の初期サイズはaf:columnタグのwidth属性で指定し、デフォルトの値は100pxに設定されています。この項では、[名前]列の幅を150pxに変更します。エディタ・ウィンドウで[名前]列を選択した状態で、プロパティ・インスペクタの[Appearance]カテゴリの[Width]を「150」に変更します。

図45 プロパティ・インスペクタで[Width]の値を編集
図45 プロパティ・インスペクタで[Width]の値を編集

NOTE
af:columntタグのwidth属性で列の幅の初期サイズを指定した場合も、実行時にドラッグ&ドロップで変更できます。

行揃えの指定

各列の行揃えの設定は、af:columnタグのalign属性で指定します。align属性には次の値を指定できます。

表10 af:columnタグのalign属性に指定できる値
align属性に指定できる値 説明
start 左から右に記述される言語(英語、日本語など)は左揃え、
右から左に記述される言語(アラビア語など)は右揃え
end 左から右に記述される言語(英語、日本語など)は右揃え、
右から左に記述される言語(アラビア語など)は左揃え
center 中央揃え
left 左揃え
right 右揃え

このチュートリアルでは、サイズ列を右揃え(align属性の値を「right」)に設定します。エディタ・ウィンドウで[サイズ]列を選択した状態で、プロパティ・インスペクタの[Common]カテゴリの[Align]ドロップダウン・リストから「right」を選択します。

図46 プロパティ・インスペクタで[Align]の値を選択
図46 プロパティ・インスペクタで[Align]の値を選択

数値データのフォーマットの変更

数値データのフォーマットを明示的に指定する場合は、コンバータを使用します。構造ウィンドウで[af:column - サイズ]の下の[af:outputText - #{row.size}]を右クリックし、コンテキスト・メニューから[af:outputText - #{row.size}の中に挿入]→[ADF Faces]→[Convert Number]を選択します。

図47 [Convert Number]を選択
図47 [Convert Number]を選択

これにより、サイズ列を表示するaf:utputTextタグの中に af:convertNumberタグが追加されます。プロパティ・インスペクタには、追加されたaf:convertNumberタグの属性が表示されているので、[Pattern]に「#,### KB」と入力します。

図48 プロパティ・インスペクタで[Pattern]の値を編集
図48 プロパティ・インスペクタで[Pattern]の値を編集

日付データのフォーマットの変更

日付データのフォーマットを指定する場合も、コンバータを使用します。構造ウィンドウで[af:column - 更新日時]の下の[af:outputText - #{row.lastModified}]を右クリックし、コンテキスト・メニューから[af:outputText - #{row.lastModified}の中に挿入]→[ADF Faces]→[Convert Date Time]を選択します。

図49 [Convert Date Time]を選択
図49 [Convert Date Time]を選択

これにより、更新日時を表示するaf:outputTextタグの中にaf:convertDateTimeタグが追加されます。プロパティ・インスペクタには、追加されたaf:convertDateTimeタグの属性が表示されているので、[Pattern]に「yyyy/MM/dd HH:mm:ss」と入力します。

図50 プロパティ・インスペクタで[Pattern]の値を編集
図50 プロパティ・インスペクタで[Pattern]の値を編集

ここまでの変更を確認するために実行すると、Webブラウザには図51のように表示されます。

図51 実行画面
図51 実行画面

まとめ

今回は、ADF Faces Rich Clientを使用したJSFアプリケーションの開発手順をチュートリアル形式で説明しました。

  • テーブル形式でのデータの表示
  • テーブルの列のカスタマイズ

引き続き、Part2では今回作成したテーブルにソートやポップアップ・メニューなど機能を追加します。

Copyright © 2009, Oracle Corporation Japan. All rights reserved.
無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。

智野 潤子 智野 潤子 (ちの じゅんこ)
日本オラクルで主に開発ツール/フレームワーク製品を担当しています。