Bevor Sie mit dieser Übung anfangen, müssen Sie ausführen.
In der vorangegangenen Übung haben Sie die employeesTable an das vom Service getLightEmployeeRecords() im Web-Service zurückgegebene Datenobjekt lightEmployeeRecordRows gebunden. Nun müssen Sie die Felder mit den Einzelangaben zu dem jeweils in der Tabelle ausgewählten Mitarbeiter füllen.
Zum Abrufen der zusätzlichen Einzelangaben der ausgewählten Mitarbeiter wird ein anderes Datenobjekt verwendet. Das Datenobjekt selectedEmployeeRecord, das Sie hinzufügen, wird vom Service getFullEmployeeRecord() zurückgegeben. Dieser Service verwendet die ID des ausgewählten Mitarbeiters in der Tabelle als Parameter und ruft zusätzliche Einzelangaben zu dem Mitarbeiter (wie Telefonnummer und Arbeitsplatz) ab.
Der JRowTableBinder, mit dem Sie die Tabelle an das Zeilendatenobjekt gebunden haben, vereinfacht diesen Schritt. Der JRowTableBinder macht das ausgewählte Element in der Tabelle als separates Datenobjekt zugänglich, das als Parameter für die Methode getFullEmployeeRecord(java.lang.Integer) verwendet werden kann. Anschließend können Sie die einzelnen Textfelder ohne großen Aufwand an die entsprechende Eigenschaft im Datenobjekt selectedEmployeeRecord binden.
Hintergrund: Der Web-Service enthält zwei Services zum Abrufen aller Einzelangaben zu den Mitarbeitern. In der Tabelle werden alle Mitarbeiter aufgeführt, aber nur ein Teil der Daten wird in der Tabelle angezeigt. Wenn ein einzelner Mitarbeiter ausgewählt wird, können die restlichen Mitarbeiterinformationen speziell für den ausgewählten Mitarbeiter abgerufen werden. Würde der Web-Service alle Daten für alle Mitarbeiter senden, wenn die Tabelle sie anfordert, könnte dies einen starken Webdatenverkehr und eine langsamere Verarbeitung der Anwendung zur Folge haben. Wenn der Mitarbeiterdatensatz beispielsweise ein Foto oder einen Anhang enthält, sollen nicht alle Fotos abgerufen werden, wenn Sie nur die gesamte Mitarbeiterliste abrufen möchten. Daher wird der Service getLightEmployeeRecord zum Füllen der Tabelle verwendet, während getFullEmployeeRecord den vollständigen Eintrag des in der Tabelle ausgewählten Mitarbeiters abruft.
Führen Sie folgende Schritte aus, um das Feld Nachname an die Eigenschaft lastName im Datenobjekt selectedEmployeeRecord zu binden:
Hintergrund: Für getFullEmployeeRecord(java.lang.Integer) ist ein Integer als Argument erforderlich. Sie möchten die Mitarbeiter-ID der aktuellen Auswahl in der Mitarbeitertabelle zum Abrufen eines vollständigen Eintrags verwenden. Beim Binden der Tabelle wurde vom Visual Editor automatisch ein jRowTableBinder generiert, der auch die aktuelle Auswahl in der Mitarbeitertabelle überwacht. Als Integer-Parameter verwenden Sie die employeeID der ausgewählten Zeile in jRowTableBinder.
Ein neues Datenobjekt mit der Bezeichnung selectedEmployeeRecord wird erstellt und Ihrer Anwendung hinzugefügt. Eine visuelle Darstellung des Datenobjekts wird dem unformatierten Bereich der Sicht "Entwurf" hinzugefügt. Dies ist in der folgenden Grafik dargestellt:
Wenn Sie nun das Feld lastName im unformatierten Bereich auswählen, zeigt eine Linie an, dass es an
selectedEmployeeRecord gebunden ist. In der Mitte der Linie steht das Textbindersymbol
für den
SwingTextComponentBinder, der für die Bindung verwendet wird. Wenn Sie die Linie oder das Bindersymbol in der Sicht
"Entwurf" auswählen, können Sie die Eigenschaften des Binders in der Sicht "Eigenschaften" überprüfen.
Beim Binden der übrigen Felder mit Einzelangaben für einen Mitarbeiter gehen Sie ähnlich vor wie beim Feld "Nachname", Sie müssen jedoch kein Datenobjekt hinzufügen. Da Sie das Datenobjekt selectedEmployeeRecord bereits hinzugefügt haben, können Sie die einzelnen Felder ohne großen Aufwand an die entsprechende Eigenschaft im Datenobjekt selectedEmployeeRecord binden.
Führen Sie zum Binden der Felder für jedes Feld im Bereich mit den Einzelangaben zu den Mitarbeitern der Anwendung die folgenden Schritte aus:
Feld | Eigenschaft im Datenobjekt selectedEmployeeRecord |
---|---|
lastNameField | lastName |
firstNameField | firstName |
idField | employeeID |
emailField | |
phoneField | phoneNum |
officeField | location.office |
buildingField | location.building |
siteField | location.site |
Das Feld Mitarbeiter-ID ist inaktiviert, weil die editierbare Eigenschaft für das Feld auf 'false' gesetzt ist. Das Standardverhalten des Textfeldbinders ändert jedoch den Status des Felds, wenn das Datenobjekt einen Wert enthält. Sie können dieses Binderverhalten ausschalten. Auf diese Weise behält das Feld stets den Status 'schreibgeschützt'.
Führen Sie folgende Schritte aus, um das automatische Umschalten der editierbaren Eigenschaft durch den Binder zu verhindern:
Wenn Sie nun die Anwendung ausführen und einen Mitarbeiter aus der Tabelle auswählen, werden in den Feldern für Einzelangaben die Einzelangaben dieses Mitarbeitereintrags angezeigt.