始める前に、『』を完了しておく必要があります。

直前の課題では、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 にバインドされていることを線が示します。 線の中央にあるテキスト・バインダー 「テキスト」バインダー・アイコン アイコンは、このバインディングに使用される 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, 2005. All Rights Reserved.