4

私の質問は、Java EE アノテーション付きエンティティ Bean のデータをクライアント側に送信して、たとえばグリッドで使用するための最良の方法は何ですか? 確かに、各エンティティの BaseModel 拡張クライアント モデルを手動で作成できますが、ここでのベスト プラクティスは何でしょうか。可能であれば、段階的なチュートリアルが必要です。

4

3 に答える 3

3

私は ext-gwt (gxt) を約 1 年間使用しており、あなたの痛みを感じています!

これまでに学んだことから、クライアントとサーバー間で Bean をやり取りするための 3 つの戦略があるようです。

各戦略の概要は次のとおりです。

  1. 各サーバー側オブジェクト Bean/pojo/エンティティ Bean の BaseModel を拡張するクライアント pojo/Bean を作成します。
  2. クライアントとサーバー間で pojo/bean を共有する
  3. クライアントに送信する前にサーバー側の pojo/beans を json に変換してから、クライアント側で Javascript (json) オブジェクトを使用します。

もちろん、それぞれにトレードオフがあります。

戦略 1は gxt にうまく統合されます。gxt の組み込みストアとバインドを使用できます。これは私が実稼働アプリケーションで使用した戦略であり、うまくいきましたが、クライアントとサーバーで Bean を複製するのは面倒です。個人的には、extjs (および gxt) のストア/バインド メカニズムが非常に複雑で、まれなケースでは拡張が難しいこともわかりました。

戦略 2:これは、次の gxt プロジェクトで使用する可能性が最も高い戦略です。欠点は、クライアントの gxt で独自のフォームとグリッド バインディングを行う必要があることです。ただし、利点は、すべての Bean/pojo を共有できることです。実装の詳細の概要は次のとおりです。

サーバー側の src ツリーで、.gwt.xml ファイルを、サーバーの pojo/bean クラスを含むルート パッケージに追加します。例: com.daveparoulek.gwt.server.models の下に「gwt-models.gwt.xml」という名前のこのファイルを作成しました。

<module rename-to='gwt-models'>
    <inherits name='com.google.gwt.user.User' />
    <source path="client" />
</module>

上記の例では、Bean は実際には com.daveparoulek.gwt.server.models.client 内にあります。

セットアップが完了したら、gwt クライアント プロジェクトの gwt.xml ファイルに「inherit」タグを追加して、src コードを com.daveparoulek.gwt.server.models 内に含めるようにクライアント gwt プロジェクトを構成できます。例:

<inherits name="com.daveparoulek.gwt.server.models" />

戦略 3: gwt に関する Google の講演をいくつか見た後、クライアント側でオブジェクトを処理する方法として、これが彼らの好ましい方法のようです。ただし、これにより、サーバー側の pojo/bean ごとに json オーバーレイ タイプが作成されます。これも gxt の世界に完全には適合しません。ここをクリックして、このコンセプトの紹介をご覧ください。

于 2009-11-17T14:59:15.177 に答える
0

BeanModelFactoryは時間の無駄です。Senchaのヘルプドキュメントによると、静的get()メソッドの呼び出しからBeanModelFactoryが返すものに対してgetFactoryを呼び出すことができます。getFactory()彼らの例に従うと、この戻り値は、実装されていない(抽象)メソッドを持つBeanModelFactoryクラス自体のインスタンスであることがわかります。

したがって、どこからともなく素晴らしいnullポインタを取得できます。

私は戦略#1に固執します。

于 2011-04-23T02:28:33.580 に答える
0

私は専門家ではありませんが、プロセスを容易にするためにGilead (チュートリアルがある) + GWT + GXT を使用しているようです。

于 2009-11-17T14:56:23.670 に答える