Frage

Meine Anwendung ist logisch in Server unterteilt, die meine Grails Domain-Objekte und Steuerungen enthalten; und Client, wo ich meine Ext GWT Klassen haben, die alle UI-Seiten erstellen.

Für UI-Anfragen, ich bin mit einem AJAX-Aufruf zu einer Controller-Methode, die zum Beispiel zurückgibt, eine Liste von Domänenobjekten als JSON-Struktur.

Nach dem DRY-Prinzip, möchte ich nicht auf „serialize“ die Domain-Daten an einen JSON-String auf dem Server dann deserialisieren es auf dem Client auf eine andere Struktur - ich möchte die Vorteile der Domain-Objekt nehmen ich habe bereits, dies muss ich mehrere Orte ändern sich nicht, wenn ich hinzufügen, ändern oder ein neues Feld entfernen.

Die Frage ist: ist das ein guter Weg zu gehen?

Wenn ja, wie wäre der beste Weg, um .groovy Domain-Objekte auf dem „Client-Seite“ Ext GWT Java-Klassen zur Verfügung zu stellen?

Wenn nein, warum ist es schlecht und was würden Sie stattdessen Rat?

War es hilfreich?

Lösung

Es gibt nicht eine gute Art und Weise - Sie benötigen ein Java-Objekt, das GWT serializable ist. Die einzige wirkliche Lösung, die ich sehen kann, ist ein Plugin (oder fügen Sie die GWT-Plugin), einen Weg zu schreiben, das Datentransferobjekt automatisch zu generieren, vielleicht Anmerkungen in einem Grails Domain-Objekt.

Ein ähnliches Verfahren verwendet wird, um die RPCAsync Schnittstellen in der GWT-Plugin automatisch generieren - siehe GwtGrailsPlugin.groovy im gwt Plugin-Verzeichnis, Linie 133 oder so ist der Anfang.

Sie könnten in die Haken (oder nur die Datei direkt ändern, wahrscheinlich einfacher) und einen Code einfügen, um die Datenübertragung Dateien zu erzeugen. Ein weiterer Vorteil könnte sein, dass Sie das Datentransferobjekt granularize könnten, so dass private Daten (wie Passwörter!) Dont übertragen bekommen.

Andere Tipps

Alternativ können Sie Ihre Daten auf das Clientside als entweder json oder xml senden. Sie können ein REST-API für Serverside erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top