< Vorherige Lektion | Nächste Lektion >

Lerneinheit 2.3: Die Detailfelder an die Tabellenauswahl binden

In der vorhergehenden Übung haben Sie die employeesTable an das Datenobjekt 'lightEmployeeRecordRows' gebunden, das seinerseits vom Service 'getLightEmployeeRecords()' im Web-Service zurückgegeben wurde. Nun müssen Sie die Detailfelder anhand des in der Tabelle ausgewählten Mitarbeiters ausfüllen.

Zum Abrufen zusätzlicher Details für jeden 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 in der Tabelle ausgewählten Mitarbeiters als Parameter und ruft zusätzliche Details über den Mitarbeiter, einschließlich Telefonnummer und Arbeitsplatz, ab.

Der JRowTableBinder, der beim Binden der Tabelle an das Zeilendatenobjekt verwendet wurde, vereinfacht diesen Schritt. Der JRowTableBinder macht das in der Tabelle ausgewählte Element als gesondertes Datenobjekt zugänglich, das als Parameter für die Methode 'getFullEmployeeRecord(java.lang.Integer)' verwendet werden kann. Sie können dann jedes Textfeld einfach an die entsprechende Eigenschaft im Datenobjekt 'selectedEmployeeRecord' binden.

Der Web-Service enthält zwei Services zum Abrufen aller Details für die einzelnen Mitarbeiter. In der Tabelle werden alle Mitarbeiter aufgelistet, und es wird nur ein Teil der Daten in der Tabelle angezeigt. Wenn ein einzelner Mitarbeiter ausgewählt wird, können Sie die restlichen Mitarbeiterinformationen nur für diesen ausgewählten Mitarbeiter abrufen. Wenn der Web-Service alle Daten zu den einzelnen Mitarbeitern sendet, wenn die Tabelle Daten anfordert, kann dies zu einem starken Webdatenverkehr und damit zu einer langsamen Verarbeitung der Anwendung führen.

Wenn der Mitarbeiterdatensatz beispielsweise ein Foto oder einen Anhang enthält, möchten Sie beim einfachen Abrufen der vollständigen Mitarbeiterliste nicht sämtliche Fotos abrufen. Daher wird der Service 'getLightEmployeeRecord' verwendet, um die Tabelle zu füllen, und der getFullEmployeeRecord ruft den vollständigen Datensatz für den Mitarbeiter ab, der in der Tabelle ausgewählt wird.

Das Feld 'Nachname' binden

In diesem Schritt binden Sie das Feld Nachname an die Eigenschaft 'lastName' im Datenobjekt 'selectedEmployeeRecord'.

  1. Wählen Sie in der Sicht 'Java-Beans' oder in der Entwurfssicht das JTextField für den Nachnamen (lastNameField) aus. Im Entwurfsbereich wird über dem Textfeld die Registerkarte Binden angezeigt.

    Registerkarte 'Binden' über einem Textfeld

  2. Klicken Sie auf die Registerkarte Binden, um das Dialogfenster 'Felddaten-Bindings' zu öffnen.
  3. Klicken Sie auf Neues Datenquellendatenobjekt. Das vorhandene Datenobjekt 'jRowTableBinder' gibt zwar den richtigen Nachnamen zurück, es enthält aber nicht den vollständigen Mitarbeiterdatensatz. Sie müssen ein neues Datenobjekt erstellen, das den vollständigen Mitarbeiterdatensatz darstellt.
  4. Stellen Sie im Feld Quellentyp sicher, dass die Option Web-Service ausgewählt ist, und dass für Datenquelle der Wert webServiceDataSource ausgewählt ist.
  5. Wählen Sie in der Liste Quellenservice den Eintrag 'getFullEmployeeRecord(java.lang.Integer)' aus. Im Dialogfenster 'Neues Datenquellendatenobjekt' werden die Services aufgelistet, die Datenobjekte zurückgeben, die mit einem Textfeld kompatibel sind.
  6. Geben Sie im Feld Name den Wert selectedEmployeeRecord ein.
  7. Wählen Sie im Feld Argument den Wert 'jRowTableBinder' und im Feld Eigenschaft den Wert 'employeeID' aus. Die Mitarbeiter-ID der ausgewählten Zeile ist nun als Argument für die Servicemethode 'getFullEmployeeRecord()' festgelegt.
    Anmerkung: getFullEmployeeRecord(java.lang.Integer) erfordert eine ganze Zahl als Argument. Sie möchten die Mitarbeiter-ID der aktuellen Auswahl in der Mitarbeitertabelle zum Abrufen eines vollständigen Datensatzes verwenden. Beim Binden der Tabelle generierte der Visual Editor automatisch den jRowTableBinder, der für die aktuelle Auswahl in der Mitarbeitertabelle empfangsbereit ist. Als Ganzzahlparameter verwenden Sie die employeeID der ausgewählten Zeile in jRowTableBinder.

    Dialogfenster 'Neues Datenquellendatenobjekt'

  8. Klicken Sie auf OK.
  9. Stellen Sie im Dialogfenster 'Felddaten-Bindings' sicher, dass 'selectedEmployeeRecord' in der Liste Datenobjekte ausgewählt ist. Beachten Sie, dass für das Datenobjekt 'selectedEmployeeRecord' mehr Eigenschaften verfügbar sind als für das Datenobjekt 'jRowTableBinder'.
  10. Wählen Sie in der Liste Datenobjekteigenschaften die Eigenschaft 'lastName' aus.

    Dialogfenster 'Felddaten-Bindings' für 'lastNameField'

  11. Klicken Sie auf OK. Das Feld 'Nachname' in Ihrer Anwendung ist nun an die Eigenschaft 'lastName' des Datenobjekts 'selectedEmployeeRecord' gebunden, das seinerseits von getFullEmployeeRecord() zurückgegeben wird.

    Ein neues Datenobjekt namens 'selectedEmployeeRecord' wird erstellt und der Anwendung hinzugefügt. Eine visuelle Darstellung des Datenobjekts wird dem unformatierten Bereich der Entwurfssicht hinzugefügt. Dies ist in der folgenden Abbildung dargestellt.

    Datenobjekt 'selectedEmployeeRecord'

    Wenn Sie nun das Feld 'lastName' im Entwurfsbereich auswählen, wird durch eine Linie angezeigt, dass es an den selectedEmployeeRecord gebunden ist. In der Mitte der Linie wird durch das Textbindersymbol der SwingTextComponentBinder dargestellt, der für diese Bindung verwendet wird. Wenn Sie die Linie oder das Symbol für den Binder im Entwurfsbereich auswählen, können Sie die Eigenschaften des Binders in der Sicht 'Eigenschaften' überprüfen.

Die verbleibenden Detailfelder binden

Beim Binden der einzelnen verbleibenden Detailfelder für einen Mitarbeiter gehen Sie ähnlich wie beim Feld für den Nachnamen vor, Sie müssen nur das Datenobjekt nicht hinzufügen. Da Sie das Datenobjekt 'selectedEmployeeRecord' bereits hinzugefügt haben, können Sie einfach jedes Feld an seine entsprechende Eigenschaft im Datenobjekt 'selectedEmployeeRecord' binden.

Führen Sie zum Binden der Felder für jedes Feld die folgenden Schritte im Abschnitt für Mitarbeiterdetails der Anwendung aus:
  1. Wählen Sie das Feld in der Entwurfssicht aus, und klicken Sie auf die Registerkarte Binden.
  2. Wählen Sie im Dialogfenster 'Felddaten-Bindings' den Eintrag 'selectedEmployeeRecord' in der Liste Datenobjekte aus.
  3. Wählen Sie in der Liste Datenobjekteigenschaften die entsprechende Eigenschaft für das Feld aus, das Sie binden. In der folgenden Grafik wird die Eigenschaft angezeigt, an die die einzelnen Textfelder gebunden werden müssen:
    Feld Eigenschaft im Datenobjekt 'selectedEmployeeRecord'
    lastNameField lastName
    firstNameField firstName
    idField employeeID
    emailField email
    phoneField phoneNum
    officeField location.office
    buildingField location.building
    siteField location.site
  4. Klicken Sie auf OK.

Wenn Sie mit dem Binden der Textfelder fertig sind, sollte der Entwurfsbereich folgendermaßen aussehen:

Anzeige des grafischen Erstellungsbereichs mit gebundenen Textfeldern

Das Feld 'Mitarbeiter-ID' schreibgeschützt machen

Das Feld 'Mitarbeiter-ID' ist inaktiviert, da die Eigenschaft 'editable' (editierbar) des Felds auf den Wert 'false' gesetzt ist. Das Standardverhalten des Textfeldbinders ändert dies jedoch in den aktivierten Status des Felds, wenn das Datenobjekt einen Wert enthält. Sie können dieses Binderverhalten ausschalten, sodass das Feld in seinem ursprünglichen schreibgeschützten Zustand verbleibt.

Gehen Sie wie folgt vor, um zu verhindern, dass der Binder die Eigenschaft 'editable' automatisch ändert:
  1. Wählen Sie das Feld 'Mitarbeiter-ID' aus. Daraufhin wird im Entwurfsbereich eine Linie mit einem Symbol Textbindersymbol angezeigt, das den Binder für das Feld darstellt.
  2. Klicken Sie auf das Bindersymbol Textbindersymbol für das Feld 'Mitarbeiter-ID'.
  3. Ändern Sie in der Sicht 'Eigenschaften' die Eigenschaft 'autoEditable' in false. Drücken Sie die Eingabetaste.

Prüfpunkt für die Lerneinheit

Wenn Sie nun die Anwendung ausführen und einen Mitarbeiter aus der Tabelle auswählen, werden die Details dieses Mitarbeiterdatensatzes in den Detailfeldern angezeigt.

< Vorherige Lektion | Nächste Lektion >