{TWBSCR} {TWBSCR}
Bevor Sie mit dieser Übung beginnen, müssen Sie zuerst Übung 2.2: Serverseitige Daten hinzufügen ausführen.
In dieser Übung werden Sie lernen, wie Sie clientseitige Daten hinzufügen. Dazu muss auf der Basis einer zuvor erstellten, serverseitigen JavaBean ein clientseitiges Datenobjekt für eine Seite erstellt und nach Bedarf konfiguriert werden.
Auf gleiche Weise, wie Sie Ihre JavaBean in der Seitendatensicht erstellt haben, werden Sie ein äquivalentes Clientdatenobjekt erstellen.
Sie sehen nun die JavaBean root
in Ihrer Clientdatensicht. Der einzige wesentliche Unterschied zwischen der JavaBean in 'Clientdaten' und der JavaBean in 'Seitendaten' besteht in dem Feld 'purchaseDate' im Abschnitt 'Users/Portfolios/Positions'. Bei clientseitigen Daten werden Datumsangaben ähnlich wie Zeichenfolgen als Basistypen behandelt.
Hinweis: Wenn ein Modell eine Eigenschaft des Typs BigDecimal hat, beachten Sie, dass Dezimalzahlen mit beliebiger Genauigkeit auf der Clientseite nicht unterstützt und auf zwei Stellen gerundet werden. Dies bedeutet, dass die Genauigkeit Ihrer Daten möglicherweise nicht mehr gegeben ist, wenn Sie BigDecimal-Werte verwenden.
Beim Erstellen von clientseitigen Datenobjekten generieren die Tools eine Reihe von Dateien und Klassen in Ihrem Projekt. Im Quellenpaket Ihres Stammverzeichnisses wird eine Eigenschaftendatei namens 'OdysseyBrowserFramework.properties' erstellt, sofern diese nicht bereits vorhanden ist. Im Paket com.ibm.dynwdo4jsmediators werden zwei Dateien erstellt, und die Eigenschaftendatei wird zur Registrierung dieser beiden Dateien für das Projekt bearbeitet:
Das Paket com.ibm.dynwdo4jsmediators.root enthält speziell generierte Mediator- und Diff-Handler-Dateien:
In diesem Abschnitt lernen Sie, wie Sie clientseitige Daten für folgende Aktionen konfigurieren:
Um das Tool Clientdaten konfigurieren zu starten, das Sie für den Rest dieser Übung durchgehend verwenden werden, wechseln Sie zur Clientdatensicht. Klicken Sie mit der rechten Maustaste auf den Knoten root, und wählen Sie Konfigurieren aus. Das Tool Clientdaten konfigurieren wird angezeigt.
Wenn Sie eine JavaBean erstellen, wird standardmäßig der Name der JavaBean intern zur Darstellung des Modellnamens verwendet, wenn das Modell in den Browser exportiert wird. Dies ist für Ihre Webanwendung jedoch nicht in allen Fällen wünschenswert. Vor allem in einer Portalumgebung empfiehlt es sich eher, einen allgemeinen Namen zu verwenden, sodass die Modelldaten im Browser von mehreren Portlets gemeinsam genutzt werden können. Umgekehrt möchten Sie unter Umständen sicherstellen, dass Ihr Modell nur für Ihr Portlet bestimmt ist und Sie ihm daher für das Portlet einen bestimmten Namen geben wollen.
Stellen Sie in jedem Fall sicher, dass Ihr Modellname nicht zu allgemein gehalten ist. Der Name Root beispielsweise wäre sicher problematisch, da andere Anwendungsentwickler denselben Namen verwenden könnten. Der Namespace im Browser ist unstrukturiert, daher würden zwei Modelle desselben Namens zu Konflikten führen. Aus diesem Grund empfiehlt es sich in der Regel, komplexe Namen zu verwenden, die Java-Klassennamen wiedergeben. Beispiel: com_ibm_myApp_myModel.
Für diesen Lerntext können Sie den Standardnamen für das Modell übernehmen.
In manchen Fällen erhalten Sie vom Server unnötig viele Daten, da nicht immer unbedingt alle Klassen oder Attribute an den Client gesendet werden müssen. Das Clientdatenobjekt kann so konfiguriert werden, dass unerwünschte Klassen oder Attribute bereinigt werden.
Hinweis: Wird eine Klasse in einer bestimmten Datenstruktur mehrfach verwendet und werden ihre Felder von beliebiger Stelle aus angepasst, wirken sich diese Änderungen überall dort aus, wo die Klasse verwendet wird. Wenn Sie dies einmal ausprobieren wollen, aktivieren Sie die Eigenschaft root.users.portfolios.user, und wählen Sie einige Markierungsfelder aus. Sie werden sehen, dass dieselben Felder automatisch im Verweis auf die Klasse User unter Root aktualisiert werden.
Sie können konfigurieren, wie die Identität Ihres Objekts erkannt wird. Wenn Sie auf eine feste Eigenschaft einer Klasse klicken, beispielsweise auf die Eigenschaft name von root, sehen Sie ein ausgewähltes Markierungsfeld mit dem Namen "Primär".
Angenommen, es sind zwei Exemplare derselben Klasse vorhanden - wie können Sie unterscheiden, ob es sich jeweils um dieselbe handelt oder nicht? Wenn zwei Benutzer vorhanden sind, also die Klasse Users zweimal vorhanden ist, wie können Sie unterscheiden, ob es sich jeweils um dieselbe handelt oder nicht? Sie können die beiden Klassen erst dann sicher voneinander unterscheiden, wenn Sie wissen, welches Element von User das Exemplar eindeutig kennzeichnet: der Primärschlüssel. Weitere Informationen zu den Primärschlüsseln.
Klasse | Feld |
---|---|
Root | Name |
Users | refNum |
Portfolio | user, porfolioName |
Position | refNum |
Stock | Symbol |
Sie werden die Datenrasterkomponente verwenden, um den Inhalt eines bestimmten Portfolios (seine Positionen) anzuzeigen. Entsprechend seiner Datenstruktur enthält die Klasse Position acht Attribute: price (der Kaufpreis), quantity (die Anzahl Aktien), refNum (die Referenznummer), symbol (das Börsensymbol), purchaseDate (das Kaufdatum), stock (die gekaufte Aktie), portfolio (das Portfolio, zu dem diese Position gehört) und user (der Eigner der Position).
Etwas fehlt noch: die Eigenschaft value
(Wert), die der Anzahl Aktien multipliziert mit dem aktuellen Wert/Preis der Aktie entspricht. Eine Möglichkeit, diese Information bereitzustellen, bestünde darin, die JavaBeans zu ändern und das Produkt dort berechnen zu lassen. Dies ist jedoch problematisch, da dieser berechnete Wert nur eine Momentaufnahme darstellen würde: wenn quantity
im Browser geändert würde, würde diese Änderung nicht im berechneten Wert berücksichtigt. Um diese Prozedur zu vermeiden, verwenden Sie ein Clientattribut, d. h. einen beliebigen JavaScript-Ausdruck, der im Kontext des Objekts ausgeführt wird, für das er erstellt wurde.
this.eGet('quantity')*this.eGet('stock').eGet('currentPrice')
Dieser Ausdruck verwendet das SDO-Objekt im Browser, und die Methode eGet kann mit einer Zeichenfolge aufgerufen werden, die das abzurufende Attribut beschreibt. Wenn das Attribut eine Liste oder ein Bereich in den serverseitigen Daten ist, gibt eGet einen JavaScript-Bereich im Browser zurück. Das Feld quantity dieses Objekts position wird mit dem Feld currentPrice des Objekts stock multipliziert, auf das von diesem Objekt position verwiesen wird. Im Browser wird dieser Ausdruck jedes Mal ausgewertet, wenn das neue Attribut angefordert wird und wird daher mit den Werten quantity und currentPrice synchronisiert.
In den Textbereich Ausdruck kann ein beliebiger, gültiger JavaScript-Ausdruck eingegeben werden. Sie können beispielsweise eine Funktion verwenden, die bei zwei gegebenen Werten einen Prozentsatz zurückgibt. Sie könnten auch ein Feld aufnehmen, das die Gesamtsumme für das gesamte Portfolio anzeigt, indem die einzelnen Positionen durchlaufen werden und eine Gesamtsumme addiert wird. Sie können beliebige, vorhandene Funktionen aufrufen, einschließlich angepasster JavaScript-Funktionen, die Sie selbst geschrieben haben. Es sind insgesamt nur zwei Regeln zu beachten:this
verweist auf ein Exemplar der Klasse, für die das Attribut erstellt wurde. Der Ausdruck muss einen Wert zurückgeben, der mit dem für das Attribut angegebenen Typ kompatibel ist. Auch wenn die Registerkarte "Erweitert" in diesem Lerntext nicht verwendet wird, sollten Sie doch die Funktion der darin enthaltenen Schaltflächen kennen. Mit EMap-Quelle laden können Sie auf eine Schlüsseldatei im System zugreifen, mit der Sie konfigurieren können, wie serverseitige Daten an den Browser gesendet und zur Diff-Verarbeitung zurückgegeben werden. Das Konfigurationsprogramm stellt eine Schnittstelle zur Verfügung, mit der die Informationen in dieser Datei konfiguriert werden können. Diese Datei sollte nur von fortgeschrittenen Benutzern bearbeitet werden.
Verwenden Sie die zweite Schaltfläche, Erneut aus serverseitigen Daten generieren, um die Clientdateninformationen zu aktualisieren, falls Ihre Serverdaten geändert werden. Derzeit gibt das Clientdatenobjekt keine möglicherweise an Ihren Serverdatenquellen vorgenommenen Änderungen wieder; Sie müssen daher Ihre internen Ressourcen erneut generieren, um beispielsweise neue Felder zu übernehmen.
Mit Aus Projekt entfernen können Sie alle Clientdatenartefakte aus Ihrem Projekt entfernen. Dies ist beim Testen nützlich bzw. in einem frühen Stadium der Entwicklung, in dem Ihre Seiten und die enthaltenen Daten noch nicht endgültig sind. Wenn Sie einen Knoten in der Clientdatensicht auswählen, entfernen Sie nur den Eintrag für diese Seite, die beim ersten Erstellen des Clientdatenelements generierten Artefakte verbleiben weiterhin in Ihrem Projekt. Wenn Sie alle Artefakte entfernen wollen, müssen Sie sie einzeln entfernen.
Sie können nun mit Übung 2.4: Die Datenrasterkomponente konfigurieren beginnen.