GWT: Wie das Ergebnis eines Asynchronen Calls behandeln?

Status
Nicht offen für weitere Antworten.
M

MartinS

Gast
Hallo,

ich habe mich entschieden, dieses Forum zu wählen, weil GWT in der Java Programmierung ähnlich der andere xWT ist.

Ich möchte in GWT einen Tree mit Daten aus einer Datenbank füllen. Dazu nehme ich einen Asynchronen RPC Call. Ist das der richtige Ansatz?

DataService ist hier als der RemoteService zu sehen und bereits initialisiert. Es wird die Methode vom RemoteService aufgerufen und mit einem AsyncCallback gefüllt. Der AsyncCallback ist eine anonyme Inner Class. getData gibt erstmal nur einen simplen String zurück. Das funktioniert so auch. onSuccess wird aufgerufen und erhält den gewünschten String. Mit dem möchte ich jetzt aber ein TreeItem in den Baum hängen.

Code:
int id = 5;
dataService.getData(id; new AsyncCallback() {
	
		public void onSuccess(Object result) {
			//TODO
		}
	
		public void onFailure(Throwable caught) {
			//TODO
		}
	});

Was mir nicht so klar ist, wie ich das Ergebnis aus der Inner Class schlau in meinen Tree bringe.
Im Prinzip hab ich hier ja einen Listener, so wie einen ClickListener in Oberflächenprogrammierung etc.
Wie reagier ich also auf so einen Event?
Implementiere ich meinen eigenen AsyncCallback und übergebe dem die TreeItems, so dass er sie anfügt?
Oder bau ich mir einen zentralen Controller, den ich dann in der onSuccess Methode aufrufe, der dann den Tree mit den Ergebnissen zusammenbaut?
Oder ganz anders?

Ich freue mich über Tipps, wie ich das angehen sollte.
 

byte

Top Contributor
Die Methode onSuccess wird aufgerufen, sobald das Ergebnis vom Server kommt. Die Antwort des Servers (in Form des Rückgabewertes) wird der Methode als Parameter übergeben. Du musst jetzt nichts anderes machen als in der onSuccess das Argument in den richtigen Typ zu casten (ist durch Dein Service-Interface definiert) und damit Deinen Tree zu füllen.

Oder bau ich mir einen zentralen Controller, den ich dann in der onSuccess Methode aufrufe, der dann den Tree mit den Ergebnissen zusammenbaut?
Genau so würde ich es machen. Du hast einen Controller, der per AsyncCallback Daten vom Server holt. Wenn die Antwort kommt (also in onSuccess) rufst Du eine Methode im Controller auf um die Daten in der View (Deinem Tree) zu aktualisieren.

Hinweis: Wenn Du GWT 1.5 benutzt, dann ist AsyncCallback generisch. Das heisst, Du bekommst direkt den richtigen Rückgabetyp in onSuccess übergeben, den Du im Service-Interface definiert hast.
 
M

MartinS

Gast
Danke Dir!
Der zentrale Controller, der dann den Baum aktualisiert schien mir auch am sinnigsten, aber ich war mir nicht so ganz sicher.

Rest ist klar, wollte es nur übersichtlich halten im Beispiel oben.
 

byte

Top Contributor
In dem Beispiel gehts bloß darum, dass Du den Table schonmal aufbauen kannst, während der Server die Anfrage noch bearbeitet. Wenn die Antwort vom Server kommt, ist der Table im Idealfall schon aufgebaut und Du brauchst nur noch den Inhalt zu setzen. Das spart Zeit.
 
G

Guest

Gast
Ich möchte ja einen Tree bauen.

Ich weiß nicht, wieviel Elemente kommen werden und wie tief der Tree sein wird. Dann kann ich doch auch nicht vorher den Tree aufbauen, oder?

Von daher müsste das doch die passende vorgehensweise sein, nicht wahr?
 

byte

Top Contributor
Ich würde Performance-Probleme erst lösen, wenn sich das Problem wirklich stellt (sprich der Seitenaufbau zu langsam ist). Machs also erstmal so.

Bei Trees geht das auch nicht so einfach. Da würde man eher auf LazyTrees umstellen, wenns mit der Performance hapert. Das bedeutet, es wird nicht sofort der gesamte Baum aufgebaut sondern nur der sichtbare Teil (+ evtl. x Hierarchiestufen vorgeladen). Man lädt dann jedes mal die Daten nach, wenn der User den Baum aufklappt.
 
M

MartinS

Gast
Soviele Daten sind es nicht, dass ich einen LazyTree bräuchte, denke ich.

Ich habe das bereits wie oben angedacht umgesetzt und es läuft gut.
Danke für Deine Tips!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Hauptprogramm pausieren und auf Ergebnis eines JDialogs warten AWT, Swing, JavaFX & SWT 7
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
T JavaFx Examples ändern liefert unerwartetes Ergebnis AWT, Swing, JavaFX & SWT 5
M Falsches Ergebnis bei Bildrotation AWT, Swing, JavaFX & SWT 1
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
S JComboBox mit Ergebnis einer SQL Abfrage füllen AWT, Swing, JavaFX & SWT 39
G Auf Ergebnis vom Thread warten AWT, Swing, JavaFX & SWT 3
D Ergebnis des Listeners ermitteln AWT, Swing, JavaFX & SWT 8
M effizient mehrere BufferedImage in eines schreiben AWT, Swing, JavaFX & SWT 6
O Swing Icon verschwindet beim Verschieben eines JLabels AWT, Swing, JavaFX & SWT 8
jojoge wie kann ich in eine Benennung eines JButtons eine Variable einbauen? AWT, Swing, JavaFX & SWT 6
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
I Einbindung eines jpg/png/icons in eine GUI AWT, Swing, JavaFX & SWT 1
Splayfer Umrandung eines AttributedStrings AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
Jose05 NullPointerException bei Beschreiben eines Labels aus einem Array AWT, Swing, JavaFX & SWT 12
Jose05 zugreifen auf ein Objekt eines GridPanes AWT, Swing, JavaFX & SWT 0
melaniemueller Verschiebung eines Fensters über Button AWT, Swing, JavaFX & SWT 27
news2swen automatisches erstellen eines Languagefiles AWT, Swing, JavaFX & SWT 1
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
MiMa Schliessen eines FXML Fensters? AWT, Swing, JavaFX & SWT 10
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
L JavaFX Validierung eines Spinner AWT, Swing, JavaFX & SWT 1
M Builden eines lauffähigen JAR Files AWT, Swing, JavaFX & SWT 3
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
M JavaFX rotieren eines Kreises mit konstanter Geschwindigkeit AWT, Swing, JavaFX & SWT 1
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
M JavaFX Auf ein UI Elemement eines anderen Controllers zugreifen AWT, Swing, JavaFX & SWT 0
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
Tronert JavaFX Linienstärke eines Separators ändern? AWT, Swing, JavaFX & SWT 3
N JavaFX Group: Gezieltes entfernen eines Objects (Rectangle) AWT, Swing, JavaFX & SWT 0
J Ziehen eines Buttons im JPanel AWT, Swing, JavaFX & SWT 2
J Drag and Drop eines Buttons AWT, Swing, JavaFX & SWT 0
M NullPointerException bei Übergabe eines RadioButtons AWT, Swing, JavaFX & SWT 11
DaCrazyJavaExpert Swing Extern den Text eines nicht fetsgelegten Buttons bekommen. AWT, Swing, JavaFX & SWT 12
J JavaFX Rectangle innerhalb eines Rectangle oder Panes positionieren? AWT, Swing, JavaFX & SWT 1
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
J linken Bildausschnitt eines BufferedImage abschneiden AWT, Swing, JavaFX & SWT 4
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
D LookAndFeel Überschreiben eines UIDelegate AWT, Swing, JavaFX & SWT 0
T Java FX Probleme beim befüllen eines Tableviews AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
U JavaFX Wechsel der Scene nach betätigen eines Button AWT, Swing, JavaFX & SWT 2
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
S JavaFX TreeItem: Icon am Ende eines Eintrags anhängen AWT, Swing, JavaFX & SWT 2
D TAB Taste innerhalb eines JSpinner AWT, Swing, JavaFX & SWT 2
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
E Swing Copy und Paste eines einzelnen Knoten aus einem JTree AWT, Swing, JavaFX & SWT 1
J Swing Vertikales Zeichnen eines Strings mit Java2D AWT, Swing, JavaFX & SWT 1
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
V JavaFX Teile eines Images Transparent machen AWT, Swing, JavaFX & SWT 4
I JavaFX Langes drücken eines Buttons AWT, Swing, JavaFX & SWT 4
B Swing Wie Witdh und Height eines GuiElements bekommen AWT, Swing, JavaFX & SWT 5
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
M Swing JPanel innerhalb eines Frames verschieben AWT, Swing, JavaFX & SWT 3
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
K Swing Inhalt eines JPanels lesen AWT, Swing, JavaFX & SWT 3
T Nur bestimmte Bereiche eines Fotos bearbeiten AWT, Swing, JavaFX & SWT 0
J Swing Erstellung eines User Interface AWT, Swing, JavaFX & SWT 2
S JavaFX Teil eines Bildes ausschneiden / als neues Bild nutzen AWT, Swing, JavaFX & SWT 8
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
O Swing Aufbau eines JFrames AWT, Swing, JavaFX & SWT 2
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
F Instanzierung einer inneren Klasse in Klasse eines anderen Packets AWT, Swing, JavaFX & SWT 3
A befüllen eines JTables mittels Methode AWT, Swing, JavaFX & SWT 10
javampir Swing Wanderung eines JFrames AWT, Swing, JavaFX & SWT 7
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
S Swing Nur den sichtbaren Bereich eines TextPane mit Inhalt darstellem AWT, Swing, JavaFX & SWT 0
I Erstellung eines kleinen Programmes AWT, Swing, JavaFX & SWT 8
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
J 2D-Grafik Windows Blue-Screen nach anzeigen eines Bildes in Java AWT, Swing, JavaFX & SWT 10
T Swing Einzelne Teile eines Textes färben? AWT, Swing, JavaFX & SWT 10
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
HaukeG JavaFX JavaFX Resize und DragAndDrop eines Pane AWT, Swing, JavaFX & SWT 4
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
J Denkfehler bei Aktualisierung eines GUI AWT, Swing, JavaFX & SWT 4
J Logikfehler im erstellen eines GUI AWT, Swing, JavaFX & SWT 3
F JTabbedPane mit Button zum Hinzufügen eines neuen Tabs AWT, Swing, JavaFX & SWT 6
B Event Handling Mausbewegung auch außerhalb eines JFrames registrieren AWT, Swing, JavaFX & SWT 2
U Swing Beim Bedienen eines Buttons JFrame schließen AWT, Swing, JavaFX & SWT 2
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
S Bestimmten Bereich eines Bildes im JFrame mit Scrollpane anzeigen AWT, Swing, JavaFX & SWT 0
C AWT die X koordinate eines Rectangles herrausfinden AWT, Swing, JavaFX & SWT 14
G 2D-Grafik Umrandung eines Winkels (drawArc(..)) AWT, Swing, JavaFX & SWT 4
V Ende eines Frames abwarten AWT, Swing, JavaFX & SWT 7
T hallo, habe ein Problem mit dem pro. eines Threads AWT, Swing, JavaFX & SWT 4
S Swing Auf Änderungen eines Models in der View einer JTable reagieren AWT, Swing, JavaFX & SWT 1
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen


Oben