< 前へ | 次へ >

演習 1.5: 「実行」ボタンのプログラミング

入力フォームが実行されると、 ページは新規レコードをデータベースに自動的に追加します。 この演習では、「新規リストの掲載 (Post New Listing)」実行ボタンを「all_records.jsp」ページに戻るようにプログラミングして、 データベース内の新規レコードを即時に表示できるようにします。
このタスクについて

実行ボタンは、次の手順でプログラミングします。

  1. new_record.jsp ファイルで、Web ページのフォームで作成した「新規リストの掲載 (Post New Listing)」ボタンを右クリックし、「プロパティー」を選択する。
  2. 規則の追加」をクリックします。「ナビゲーション規則の追加」ウィンドウが開きます。
  3. 「ページ」ドロップダウンから「all_records.jsp」を選択して「OK」をクリックします。
  4. このページを保管します。レコードをデータベースに追加して all_records.jsp ページに戻ることを検証する場合は、テスト・サーバーで new_record.jsp を実行します。
タスクの結果
重複キーの防止
重要:

ID 列は ADS テーブルの主キーであるので、このテーブルに既存の ID 値を持つレコードはここに追加できません。 各新規レコードのために新規の未使用キーを自動的に作成するために自動キー生成を使用する方法については、 モジュール 2 で学習します。

その方法を学習するまでは、新規レコードの追加には、未使用 ID 番号をこのページに入力する必要があります。 このデータベースが持っているレコードは 1 から 24 までの ID 番号を使用しているので、主キーとしては 24 を超える番号を入力します。 複数のレコードを入力する場合は、キーが重複していないことを確認してください。

入力の関連レコードへのバインディング (オプション)

このタスクについて

ページの入力フォームとは、作成した関連レコードにバインドされた 1 組の JavaServer Faces 入力フィールドのことです。 使用するデータベースの ADS テーブルに新規レコードを表示するために、関連レコードを作成したことを思い出してください。 バインディング とは、JavaServer Faces 入力コンポーネントを関連レコードの列にリンクできる方法のことです。

関連レコードを作成すると、ウィザードはその列のすべてを、 ページにある入力フィールドに自動的にバインドします。 手動で変更を行いたい場合は、 それぞれの列をそれぞれ別の入力フィールドにバインドすることができます。 ユーザーの関連レコードの列を入力フィールドにバインドするには、 「ページ・データ」ビューから列をこのフィールドにドラッグします。 このプロセスは、ユーザーのフォームにある「説明」 入力フィールドを削除してから再作成することによって実験してみることができます。

「ページ・データ」ビューは、普通、ワークベンチの左下隅にあります。 見つけられない場合は、メニュー・バーから「ウィンドウ」 > 「ビューの表示」 > 「ページ・データ」 と順にクリックします。一般に、「ページ・データ」ビューは動的 Web ページを作成するときにのみ使用します。

「ページ・データ」ビューは、 関連レコードまたは関連レコード・リストといったデータ・オブジェクトの形式で、 データベースのようなデータ・ソースへの関連付けを保管しています。 これらのデータ・オブジェクトはデータ・ソース自体も、あるいは、 ページ上のいずれのコンポーネントも表していません。 データ・オブジェクトは、それらを表すのではなく、 プロジェクトとデータ・ソースの間の接続を表します。 この接続が作成されると、「ページ・データ」ビューからデータ・オブジェクトを Web ページにドラッグして、 この接続を完成させ、データ・ソースの情報を Web ページに表示できます。 例えば、次に示すのは、このチュートリアルで作成された関連レコード・リストを示す「ページ・データ」ビューの図です。

「ページ・データ」ビュー

この図には、「all_recordlist (ADS)」関連レコード・リストと、 それに続いて、この関連レコード・リストにあるすべての列を見ることができます。 ひとたびこのデータ・オブジェクトが定義されたならば、 データベースに再接続せずに「ページ・データ」ビューで何回でも、 これらの列を Web ページの入力コンポーネントにドラッグすることができます。

例えば、DESCRIPTION 列の値を Web ページに表示したい場合、 最初にテキスト出力フィールドをページにドラッグし、 次に「ページ・データ」ビューの「DESCRIPTION」列をそのテキスト出力フィールドにドラッグします。このことを「列を出力フィールドにバインドする」と表現します。

あるいは、ユーザーにデータベースの DESCRIPTION 列のための新規の値を入力させたい場合は、 テキスト入力フィールドをこのページにドラッグすることもできます。 次に、「DESCRIPTION」列をそのテキスト入力フィールドにドラッグします。

以下の手順は入力フィールドの概念およびバインディングのプロセスを説明するために準備されたものですが、 これらの手順をウォークスルーすることは、このチュートリアルではオプションです。 ウォークスルーしない場合は、次の演習に進んでください。

  1. new_record.jsp ファイルで、「説明」入力フィールドをクリックする。「削除」を押す。
  2. 「パレット」ビューで、拡張 Faces コンポーネント・ドロワーをクリックして展開する。
  3. パレットから「入力」コンポーネントを、 削除した「説明」入力フィールドが入っていたセルにドラッグする。 これで、入力フィールドがこのセルに入りますが、 この入力フィールドはいずれの列にもバインドされていないので、 その中には {ID} または {TITLE} のようなテキストは入っていません。
  4. 「ページ・データ」ビューで、「SDO 関連レコード」 > 「create_record (サービス・データ・オブジェクト)」 > 「create_record (ADS)」とクリックして展開し、作成した「入力」コンポーネントに「DESCRIPTION」列をドラッグする。 「入力」コンポーネント内のテキストが変更され、 「DESCRIPTION」列にバインドされていることがわかります (下図参照)。
    「ページ・データ」ビュー
  5. このファイルを保管して、次に必要であれば、ページをテスト・サーバーで実行する。

演習のチェックポイント

演習 1.5 が完了しました。この演習では、コマンド・ボタンをプログラミングし、パレットから Web ページに JSF ウィジェットをドラッグ・アンド・ドロップすることで、データを入力フィールドにバインドすることを学習しました。
< 前へ | 次へ >

フィードバック