GrailsのドメインオブジェクトをExt GWT(GXT)と共有する方法は?
質問
私のアプリケーションは、Grailsドメインオブジェクトとコントローラーを含むサーバーに論理的に分割されています。クライアント、すべてのUIページを作成するExt GWTクラスがあります。
UIリクエストの場合、たとえばドメインオブジェクトのリストをJSON構造として返すコントローラーメソッドへのAJAX呼び出しを使用しています。
DRYの原則に従って、「シリアル化」したくないドメインデータをサーバー上のJSON文字列に変換してから、クライアント上で別の構造に逆シリアル化します-既に持っているDomainオブジェクトを利用したいので、追加するときに複数の場所を変更する必要はありません新しいフィールドを変更、削除します。
質問:それは良い方法ですか?
「はい」の場合、「クライアント側」で.groovyドメインオブジェクトを使用可能にする最良の方法はどのようになりますか。 Ext GWT Javaクラス?
いいえの場合、なぜ悪いのか、代わりに何をアドバイスしますか?
解決
良い方法はありません-GWTシリアライズ可能なJavaオブジェクトが必要です。私が見ることができる唯一の本当の解決策は、おそらくgrailsドメインオブジェクト内の注釈を使用して、データ転送オブジェクトを自動生成する方法をプラグインを記述する(またはGWTプラグインに追加する)ことです。
gwtプラグインでRPCAsyncインターフェースを自動生成するために同様の方法が使用されています-gwtプラグインディレクトリのGwtGrailsPlugin.groovyを参照してください。133行目が開始です。
それをフックして(または単にそのファイルを直接変更し、おそらくもっと簡単に)、データ転送ファイルを生成するコードを挿入することができます。追加の利点として、データ転送オブジェクトを細分化して、プライベートデータ(パスワードなど)が転送されないようにすることができます。
他のヒント
代わりに、データをjsonまたはxmlとしてクライアント側に送信できます。サーバーサイド用のREST APIを作成できます。