直前の演習では、Web サービスで getLightEmployeeRecords() サービスが戻した lightEmployeeRecordRows データ・オブジェクトに employeesTable をバインドしました。 ここでは、テーブルで選択した従業員に基づいて、詳細フィールドに取り込みを行う必要があります。
行データ・オブジェクトにテーブルをバインドしたときに使用した JRowTableBinder を使用すると、 このステップは簡単になります。 JRowTableBinder を使うと、テーブル内の選択した要素を独立したデータ・オブジェクトとして 取り出すことができるので、これを getFullEmployeeRecord(java.lang.Integer) メソッドの パラメーターとして使用できます。 これによって、それぞれのテキスト・フィールドを selectedEmployeeRecord データ・オブジェクト内の対応するプロパティーに、 簡単にバインドできます。
たとえば、従業員のレコードに写真または添付資料が含まれている場合、 従業員全員のリストを作成するだけのために、全員の写真を取得することは望ましくないでしょう。 したがって、まず getLightEmployeeRecord サービスを使用してテーブルを作成し、 テーブルで選択された従業員のフル・レコードを getFullEmployeeRecord を 使って取り込みます。
このステップでは、「Last name」フィールド を selectedEmployeeRecord データ・オブジェクトの lastName プロパティーにバインドします。
従業員の残りの各詳細フィールドをバインドするには、「Last name」フィールドと同様のプロセスを行いますが、 データ・オブジェクトを追加する必要はありません。 すでに selectedEmployeeRecord データ・オブジェクトを追加済みのため、 それぞれのフィールドを selectedEmployeeRecord データ・オブジェクトの対応する プロパティーに単純にバインドすることができます。
フィールド | selectedEmployeeRecord データ・オブジェクトのプロパティー |
---|---|
lastNameField | lastName |
firstNameField | firstName |
idField | employeeID |
emailField | |
phoneField | phoneNum |
officeField | location.office |
buildingField | location.building |
siteField | location.site |
テキスト・フィールドのバインディングが終了したならば、デザイン域は次のイメージのようになるはずです。
「Employee ID」フィールドは、そのフィールド上で編集可能プロパティーが「false」に設定されているため、 使用不可になっています。 しかし、テキスト・フィールド・バインダーのデフォルト動作は、データ・オブジェクトに値が含まれていると、 使用可能の状態を変更します。 フィールドが最初の読み取り専用状態のままになるように、このバインダー動作をオフにすることができます。