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.

Feld 'Nachname' binden:

Führen Sie folgende Schritte aus, um das Feld Nachname an die Eigenschaft lastName im Datenobjekt selectedEmployeeRecord zu binden:

  1. Wählen Sie in der Sicht "JavaBeans" oder "Entwurf" das JTextField für den Nachnamen (lastNameField) aus. Im Entwurfbereich wird eine Registerkarte Binden im Textfeld angezeigt.

    Registerkarte 'Binden' auf 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 jedoch nicht den vollständigen Mitarbeitereintrag. Sie müssen daher ein neues Datenobjekt mit dem vollständigen Mitarbeitereintrag erstellen.
  4. Achten Sie darauf, dass im Feld Quellentyp die Option Web-Service und als Datenquelle die webServiceDataSource ausgewählt ist.
  5. Wählen Sie in der Liste Quellenservice den Service getFullEmployeeRecord(java.lang.Integer) aus. Im Dialogfenster Neues Datenquellendatenobjekt werden die Services aufgelistet, die mit einem Textfeld kompatible Datenobjekte zurückgeben.
  6. Geben Sie im Feld Name den Wert selectedEmployeeRecord ein.
  7. Wählen Sie im Feld Argument die Option jRowTableBinder und im Feld Eigenschaft die Eigenschaft employeeID aus. Die Mitarbeiter-ID der ausgewählten Zeile ist nun als Argument für die Servicemethode getFullEmployeeRecord() festgelegt.

    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.

    Dialogfenster 'Neues Datenquellendatenobjekt'

  8. Klicken Sie auf OK.
  9. Stellen Sie im Dialogfenster Felddaten sicher, dass in der Liste Datenobjekte der Eintrag selectedEmployeeRecord 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 für den Nachnamen in Ihrer Anwendung ist nun an die Eigenschaft lastName des Datenobjekts selectedEmployeeRecord gebunden, das von getFullEmployeeRecord() zurückgegeben wird.

    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:

    Datenobjekt selectedEmployeeRecord

    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 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.

Übrige Felder mit Einzelangaben binden

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:

  1. Wählen Sie das Feld in der Sicht "Entwurf" aus und klicken Sie auf die Registerkarte Binden.
  2. Wählen Sie im Dialogfenster Felddaten in der Liste Datenobjekte den Eintrag selectedEmployeeRecord aus.
  3. Wählen Sie in der Liste Datenobjekteigenschaften die entsprechende Eigenschaft für das zu bindende Feld aus. In der folgenden Tabelle sind die Eigenschaften aufgeführt, die an 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 die Sicht "Entwurf" folgendermaßen aussehen:

    Sicht des grafischen Erstellungsbereichs mit gebundenen Textfeldern

Schreibschutz für das Feld 'Mitarbeiter-ID' einrichten

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:

  1. Wählen Sie das Feld Mitarbeiter-ID aus. In der Sicht "Entwurf" wird 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. Setzen Sie in der Sicht "Eigenschaften" die Eigenschaft autoEditable auf false. Drücken Sie die Eingabetaste.

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.

Nun können Sie mit der nächsten Übung fortfahren:

Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2000, 2005. Alle Rechte vorbehalten.