直前の課題では、Web サービスで getLightEmployeeRecords() サービスが戻した lightEmployeeRecordRows データ・オブジェクトに employeesTable をバインドしました。 ここでは、テーブルで選択した従業員に基づいて、詳細フィールドに取り込みを行う必要があります。
選択したそれぞれの従業員の追加の詳細を得るには、 別のデータ・オブジェクトを使用します。 追加する selectedEmployeeRecord データ・オブジェクトは、getFullEmployeeRecord() サービスによって戻されます。 このサービスは、テーブルから選択した従業員の ID をパラメーターとして取り込み、 さらに、電話番号および就労場所を含む従業員の詳細データを取り込みます。
行データ・オブジェクトにテーブルをバインドしたときに使用した JRowTableBinder を使用すると、 このステップは簡単になります。 JRowTableBinder は、getFullEmployeeRecord(java.lang.Integer) メソッドのパラメーターとして使用できるテーブル内での個別のデータ・オブジェクトとして選択したエレメントを公開します。 これによって、それぞれのテキスト・フィールドを selectedEmployeeRecord データ・オブジェクト内の対応するプロパティーに、 簡単にバインドできます。
背景: Web サービスには、 それぞれの従業員のすべての詳細データを取得するための 2 つのサービスが組み込まれています。 テーブルには全従業員がリストされますが、テーブルには、データのサブセットだけが表示されます。 次に 1 人の従業員を選択したときに、選択されたその従業員に限り、この従業員の残りの情報を取り出すことができます。 Web サービスが、テーブルが要求する各従業員すべてのデータを送ると、 Web トラフィックが濃密になり、アプリケーションのパフォーマンスが低下することがあります。 たとえば、従業員のレコードに写真または添付資料が含まれている場合、 従業員のフル・リストを作成するだけのために、すべての写真まで取り出す必要はありません。 したがって、getLightEmployeeRecord サービスを使用してテーブルにデータを取り込み、 テーブルで選択された従業員のフル・レコードは、getFullEmployeeRecord が取り込みます。
「ラストネーム」フィールドを selectedEmployeeRecord データ・オブジェクトの lastName プロパティーにバインドするには、次のようにします。
背景: getFullEmployeeRecord(java.lang.Integer) には、引き数としての整数が必要です。 フル・レコードを取り出すために、従業員テーブルでの現在の選択による従業員 ID の使用が必要です。 テーブルをバインドすると、ビジュアル・エディターが jRowTableBinder を自動的に生成し、 従業員テーブルでの現行の選択を listen します。 整数パラメーターには、jRowTableBinder で選択した行の employeeID を使用します。
selectedEmployeeRecord という名前の新しいデータ・オブジェクトが作成されて、 アプリケーションに追加されます。 データ・オブジェクトのビジュアル表示が次のイメージに示されているようにデザイン・ビューのフリー・フォーム域に追加されます。
これで、デザイン域で「lastName」フィールドを選択すると、selectedEmployeeRecord
にバインドされていることを線が示します。
線の中央にあるテキスト・バインダー アイコンは、このバインディングに使用される
SwingTextComponentBinder を表しています。
デザイン域で線またはバインダーを示すアイコンを選択すると、
「プロパティー」ビューでそのバインダーのプロパティーを調べることができます。
従業員の残りの各詳細フィールドをバインドするには、ラストネーム・フィールドと同様のプロセスを行いますが、 データ・オブジェクトを追加する必要はありません。 すでに selectedEmployeeRecord データ・オブジェクトを追加したため、 単にそれぞれのフィールドを selectedEmployeeRecord データ・オブジェクトの対応するプロパティーにバインドすることができます。
フィールドをバインドするには、このアプリケーションの「従業員の詳細」セクションにあるフィールドのそれぞれに対して、 次の手順を完了します。
フィールド | selectedEmployeeRecord データ・オブジェクトのプロパティー |
---|---|
lastNameField | lastName |
firstNameField | firstName |
idField | employeeID |
emailField | |
phoneField | phoneNum |
officeField | location.office |
buildingField | location.building |
siteField | location.site |
「従業員 ID」フィールドは、そのフィールド上で編集可能プロパティーが「false」に設定されているため、 使用不可になっています。 しかし、テキスト・フィールド・バインダーのデフォルト動作は、データ・オブジェクトに値が含まれていると、 使用可能の状態を変更します。 フィールドが最初の読み取り専用状態のままになるように、このバインダー動作をオフにすることができます。
バインダーが編集可能プロパティーを自動的に切り替えるのを防止するには、以下のようにします。
これで、アプリケーションを実行し、テーブルから従業員を選択したときに、 その従業員のレコードの詳細が詳細フィールドに表示されます。