< 前へ | 次へ >

演習 1.6: 更新ページの作成

ここまでで、Web サイトのために、リストを表示し、作成するページが作成できています。 この演習では、ユーザーがリストを更新したり、削除したりすることを可能にするページを作成します。 更新ページは、ほとんど寸分たがわず作成ページと同じように見えます。 ただし、更新ページでは、ユーザーが変更できるように、 入力フィールドに既存のレコードからのデータが表示される点が異なります。
このタスクについて

最初に、データベースからの既存のレコードを表示する関連レコードを作成します。 次に、この関連レコードのための JavaServer Faces 更新フォームを作成して一部を変更すると、このページはテストの準備が整います。

更新関連レコードの作成

  1. 「エンタープライズ・エクスプローラー」ビューで、「update_record.jsp」ファイルをダブルクリックして開く。
  2. デフォルトのテキスト Insert content here を削除する。
  3. 「パレット」ビューで、「データおよびサービス」ドロワーをクリックして展開する。
  4. SDO 関連レコード」コンポーネントを「パレット」から空のコンテンツ領域にドラッグする。 「関連レコードの追加」ウィンドウが開きます。
  5. 「名前」フィールドに「update_record」と入力する。
  6. コントロールの作成対象」の下の「既存レコードの更新」をクリックする。
  7. 関連レコードを Web ページに表示するための入出力コントロールの追加」が選択されていることを確認する。
  8. 次へ」をクリックする。
  9. 「テーブル」ボックスで「W5SAMPLE」を展開し、「ADS」を選択する。
  10. 次へ」をクリックする。「関連レコードの追加」ページが開きます。

結果のフィルター操作

関連レコードはデータベースから 1 レコードのみ表示できます。 したがって、 ユーザーの編集用に 1 レコードのみが表示されるようにデータベース・テーブルをフィルター操作する必要があります。 (前の演習ではデータベースのフィルター操作をする必要はありませんでした。 それは、新規レコードは 1 つしか作成しなかったので、 データベースにはフィルター操作すべき結果がなかったからです。) データベースのそれぞれのレコードには固有 ID 番号が付けられているので、 結果をフィルター操作して、特定の ID 番号を持つレコードを得ることができます。
  1. 「関連レコードの追加」ページには、タスク・リンクのリストがある。「タスク」の下の「フィルター結果」をクリックする。 「フィルター」ウィンドウが開くので、デフォルトのフィルター条件「ID = #{param.ID}」を「フィルター」列に挿入する。 「フィルター」ウィンドウは、次のようになります。
    「フィルター」ウィンドウ
    このコードは、データベースのレコードをフィルター操作します。 したがって、指定済み ID 番号を持つレコードのみが関連レコードに表示されます。 この条件に関する詳細は、 この演習の後半にある『行アクションの追加』セクションで学習します。 「閉じる」をクリックする。
  2. 次へ」をクリックする。「データ・コントロールの構成」ページが開きます。
  3. 表示するフィールド」セクションで、 対象の入力フォームに表示したいフィールドを除くすべてのフィールド名の横にあるチェック・ボックスをクリアする。
    • ID
    • MAINCATEGORY
    • TITLE
    • DESCRIPTION
    • PRICE
    • PHONE
  4. 上へ」または「下へ」をクリックして、フィールド名を以下のように上から下へと再配列する。
    • ID
    • TITLE
    • DESCRIPTION
    • MAINCATEGORY
    • PRICE
    • PHONE
  5. ID フィールドについて、「コントロール・タイプ」列のドロップダウン・リストから「表示数値」を選択する。レコード ID 番号は、ユーザーが表示できるようにしますが、 ユーザーが更新できるようにはしたくありません。 ID フィールドを出力フィールドにすると、重複 ID の問題を回避するのに役立ちます。
  6. オプション」をクリックする。「オプション」ウィンドウが開きます。「実行ボタン」オプションが選択されていることを確認します。「ラベル」フィールドに「更新」と入力します。「OK」をクリックします。 「関連レコードの追加」ウィンドウは、次のようになるはずです。
    「関連レコードの追加」ウィンドウ
  7. 終了」をクリックして、下図のようにページに更新フォームを生成する。
    「更新フォーム」ページ

「更新」および「削除」ボタンのプログラミング

ここでもう一度、ユーザーが all_records.jsp ページを参照し、 その他のレコードとともに変更したレコードを表示するためのコードを追加します。
  1. Web ページで作成した「更新」ボタンを右クリックして、「プロパティー」を選択する。
  2. 規則の追加」をクリックする。「ナビゲーション規則の追加」ウィンドウが開きます。
  3. 「ページ」ドロップダウンから「all_records.jsp」を選択する。 「この規則の使用条件」ボックスで、「このアクションのみ」をクリックする。フィールドに #{pc_Update_record.doUpdate_recordUpdateAction} が含まれていることを確認してください。 「OK」をクリックします。
  4. Web ページ上の「削除」ボタンのために、ステップ 1 から 3 を繰り返して、同じようにコードを編集する。「この規則の使用条件」フィールドに #{pc_Update_record.doUpdate_recordDeleteAction} が含まれていることを確認してください。
  5. このページを保管します。レコードをデータベースに更新して all_records.jsp ページに戻ることを検証する場合は、テスト・サーバーで new_record.jsp を実行します。

行アクションの追加

ここで、更新するデータベース・レコードをユーザーが選択できるように、all_records.jsp に表への行アクションを追加します。 「#{param.ID}」は、更新ページが更新するレコードの ID 番号を表します。 ユーザーが行をクリックすると、そのレコード ID 番号は 「#{param.ID}」パラメーターとして update_record.jsp ページに送られます。 そこで、update_record.jsp ページに挿入されたばかりのフィルター済み関連レコードは、 更新用のそのレコードのみを表示します。
  1. 「エンタープライズ・エクスプローラー」ビューで、「all_records.jsp」ファイルをダブルクリックしてエディターで開く。 データ・テーブル内の任意の場所をクリックする。「プロパティー」ビューを開く。
  2. 「プロパティー」ビューで、HTML タグ・リストから「hx:dataTableEx」での「行アクション」タブをクリックする。
  3. 行がクリックされたときに実行されるアクションを追加 (Add an action that's performed when a row is clicked)」をクリックする。 「行アクションの構成」ダイアログが開きます。 「行をクリックすると、サーバーに 要求が送信され、行情報もパラメーターとして送信される (Clicking the row sends a request to the server with row information sent as parameters)」を選択し、次に「OK」をクリックします。 列がデータ・テーブルに追加されます。
  4. 「プロパティー」ビューで、「hx:requestRowAction」タブをクリックする。
  5. 規則の追加」をクリックする。「ナビゲーション規則の追加」ダイアログが開きます。
  6. 「ページ」ドロップダウンから「update_record.jsp」を選択する。 「この規則の使用条件」ボックスで、「このアクションのみ (This action only)」を選択します。 「このアクションのみ」フィールドには、行アクションを 追加した際に作成される #{pc_All_records.doRowAction1Action} が自動的に取り込まれます。 「OK」をクリックします。 このフィールドに上記のメソッドが自動的に取り込まれない場合は、フィールドにメソッドを入力し、ClassifiedsTutorial/Java Resources「src/pagecode/All_records.java」に次を追加してください。
    public String doRowAction1Action() {
    				return "";
    }
  7. 「プロパティー」ビューで、「hx:requestRowAction」での「パラメーター」タブをクリックする。 「パラメーターの追加」をクリックし、次に「名前」フィールドに「ID」と入力します。 この ID パラメーターを ID 列にバインドする必要があります。 この行アクションをデータ・リストの ID 列にバインドすることは、 行がクリックされるときに、要求パラメーターがリストのレコード ID になることを意味します。
    1. 」をクリックし、次に「ページ・データ・オブジェクトの選択 ボタンをクリックする。
    2. データ・オブジェクト」タブで、 「all_recordlist (サービス・データ・オブジェクト)」 > 「all_recordlist (ADS)」を展開し、次に「ID (java.lang.Integer)」を選択する。
    3. OK」をクリックします。
タスクの結果
これで、ユーザーは、行をクリックすると、Web サイトで案内広告に関する情報を更新できるようになります。このファイルを保管し、必要であればページをテストする。 最初に all_records.jsp を開いておくことを忘れないでください。 この JSP が update_record.jsp にリンクするページだからです。

演習のチェックポイント

演習 1.6 が完了しました。この演習では、データベースのレコードを更新する Web ページの作成方法を学習しました。
< 前へ | 次へ >

フィードバック