この課題を始める前に、「」を完了してください。

直前の課題では、Web サービスで getLightEmployeeRecords() サービスが戻した lightEmployeeRecordRows データ・オブジェクトに employeesTable をバインドしました。 ここでは、テーブルで選択した従業員に基づく詳細フィールドにデータを取り込む必要があります。

選択したそれぞれの従業員の詳細を得るには、別のデータ・オブジェクトを使用します。 追加する selectedEmployeeRecord データ・オブジェクトは、getFullEmployeeRecord() サービスによって戻されます。 このサービスは、テーブルから選択した従業員の ID をパラメーターとして取り込み、 さらに、電話番号や部署などの従業員の詳細データを取り込みます。

行データ・オブジェクトにテーブルをバインドしたときに使用した JRowTableBinder を使用すると、 この手順は簡単になります。 JRowTableBinder は、テーブル内で個別のデータ・オブジェクトとして選択したエレメントを公開し、 このデータ・オブジェクトが getFullEmployeeRecord(java.lang.Integer) メソッドのパラメーターとして使用できます。 次に、それぞれのテキスト・フィールドを selectedEmployeeRecord データ・オブジェクト内の対応するプロパティーに、 簡単にバインドできます。

背景説明: Web サービスには、 それぞれの従業員のすべての詳細データを取得するための 2 つのサービスがあります。 テーブルには全従業員がリストされますが、テーブルに表示されるのはデータのサブセットだけです。 次に 1 人の従業員を選択したときに、選択されたその従業員に限り、この従業員の残りの情報を取り出すことができます。 Web サービスが、テーブルの要求する各従業員すべてのデータを送ると、 Web トラフィックが重くなり、アプリケーションのパフォーマンスは低下します。 例えば、従業員のレコードに写真や添付資料が含まれている場合、 従業員の全リストを作成するだけのために、すべての写真まで取り出す必要はありません。 このため、getLightEmployeeRecord サービスを使用してテーブルにデータを取り込み、 テーブルで選択された従業員の全レコードは、getFullEmployeeRecord が取り込みます。

「ラストネーム」フィールドをバインドする

ラストネーム」フィールドを selectedEmployeeRecord データ・オブジェクトの lastName プロパティーにバインドするには、次のようにします。

  1. Java Bean ビューまたはデザイン・ビューで、ラストネーム (lastNameField) のための JTextField を選択する。 このデザイン域では、テキスト・フィールドに「バインド」タブが表示されます。

    テキスト・フィールドの「バインド」タブ

  2. バインド」タブをクリックして、 「フィールド・データのバインディング」ダイアログ・ボックスを開く。
  3. 新規データ・ソース・データ・オブジェクト」をクリックする。 既存の jRowTableBinder データ・オブジェクトが正しいラストネームを戻しますが、 これには従業員の全レコードは含まれていません。 そこで、従業員の全レコードを表す新しいデータ・オブジェクトを作成する必要があります。
  4. ソース型」フィールドで、「Web サービス」が選択され、「データ・ソース」には、 「webServiceDataSource」が選択されていることを確認する。
  5. ソース・サービス」リストから、 「getFullEmployeeRecord(java.lang.Integer)」を選択する。 「新規データ・ソース・データ・オブジェクト」ダイアログ・ボックスには、 テキスト・フィールドと互換性のあるデータ・オブジェクトを戻すサービスがリストされます。
  6. 名前」フィールドに、selectedEmployeeRecord と入力する。
  7. 引き数」フィールドで「jRowTableBinder」を選択し、 「プロパティー」フィールドで「employeeID」を選択する。 これで、選択した行の従業員 ID が getFullEmployeeRecord() サービス・メソッドの引き数に設定されます。

    背景説明: getFullEmployeeRecord(java.lang.Integer) には、引き数としての整数が必要です。 全レコードを取り出すには、従業員テーブルで現在選択している従業員 ID を使用します。 テーブルをバインドすると、ビジュアル・エディターが jRowTableBinder を自動的に生成し、 従業員テーブルで現在選択している項目を listen します。 整数パラメーターには、 jRowTableBinder で選択した行の employeeID を使用します。

    「新規データ・ソース・データ・オブジェクト」ダイアログ・ボックス

  8. OK」をクリックする。
  9. 「フィールド・データのバインディング」ダイアログ・ボックスで、 「データ・オブジェクト」リストに、selectedEmployeeRecord が選択されていることを確認する。 selectedEmployeeRecord データ・オブジェクトには、 jRowTableBinder データ・オブジェクトより多くの利用可能なプロパティーがあります。
  10. データ・オブジェクトのプロパティー」リストから、 「lastName」プロパティーを選択する。

     「ラストネーム・フィールドのデータ・バインディング」ダイアログ・ボックス

  11. OK」をクリックする。 これでアプリケーションのラストネーム・フィールドは、 selectedEmployeeRecord データ・オブジェクトの「lastName」プロパティーにバインドされました。 このデータ・オブジェクトは getFullEmployeeRecord() によって戻されます。

    selectedEmployeeRecord という名前の新しいデータ・オブジェクトが作成されて、 アプリケーションに追加されます。 データ・オブジェクトのビジュアル表示が次の画像のようにデザイン・ビューのフリー・フォーム域に追加されます。

    selectedEmployeeRecord データ・オブジェクト

    この後、デザイン域で「lastName」フィールドを選択すると、selectedEmployeeRecord にバインドされていることが線によって示されます。線の中央にあるテキスト・バインダー Text binder icon アイコンは、このバインディングに使用される SwingTextComponentBinder を示しています。デザイン域で線またはバインダーを示すアイコンを選択すると、 「プロパティー」ビューでそのバインダーのプロパティーを調べることができます。

残りの詳細フィールドをバインドする

残りの各フィールドをバインドするには、ラストネーム・フィールドと同様の手順を実行しますが、 データ・オブジェクトを追加する必要はありません。 既に selectedEmployeeRecord データ・オブジェクトを追加したため、 それぞれのフィールドを selectedEmployeeRecord データ・オブジェクトの対応するプロパティーにバインドするだけで済みます。

フィールドをバインドするには、このアプリケーションの「従業員の詳細」セクションにあるフィールドのそれぞれに対して、 次の手順を実行します。

  1. デザイン・ビューでフィールドを選択し、「バインド」タブをクリックする。
  2. 「フィールド・データのバインディング」ダイアログ・ボックスで、 「データ・オブジェクト」リストから、「selectedEmployeeRecord」を選択する。
  3. データ・オブジェクトのプロパティー」リストで、 バインドしようとするフィールドのプロパティーを選択する。 次の図表は、各テキスト・フィールドにバインドする必要があるプロパティーを示しています。
    フィールド selectedEmployeeRecord データ・オブジェクトのプロパティー
    lastNameField lastName
    firstNameField firstName
    idField employeeID
    emailField email
    phoneField phoneNum
    officeField location.office
    buildingField location.building
    siteField location.site
  4. OK」をクリックする。 テキスト・フィールドのバインディングが終了したら、デザイン域は次の画像のようになります。

従業員 ID フィールドを読み取り専用にする

「従業員 ID」フィールドは、そのフィールド上で編集可能プロパティーが「false」に設定されているため、 使用不可になっています。 しかし、テキスト・フィールド・バインダーのデフォルト動作は、データ・オブジェクトに値が含まれていると、 使用可能の状態に変更されます。 フィールドが最初の読み取り専用状態のままになるように、このバインダー動作をオフにすることができます。

バインダーが編集可能プロパティーに自動的に切り替わるのを防止するには、以下の手順を実行します。

  1. 「従業員 ID」フィールドを選択する。 そのフィールドのバインダーを表す線が、アイコン (テキスト・バインダー・アイコン) があるデザイン域に表示されます。
  2. 「従業員 ID」フィールドのバインダー テキスト・バインダー・アイコン アイコンをクリックする。
  3. 「プロパティー」ビューで、 autoEditable プロパティーを false に設定する。 Enter キーを押す。

これでアプリケーションを実行し、テーブルから従業員を選択したときに、 その従業員のレコードの詳細が詳細フィールドに表示されます。

これで次の課題の 「」に進む準備ができました。

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2004. All Rights Reserved.