2010-11-25 7 views
0

GWTページでエンティティクラスを使用することについて、愚かな問題が多分あります。 GWTページにあるクラスを表示するには、このクラスをGWTクライアントアプリケーションのパッケージ内で定義する必要があります。例えば。 com.foo.clinetのGWTアプリケーションは、このパッケージとそのサブパッケージで定義されたクラスのみをコンポーネント(GWTグリッド、ラベルなど)に表示することができます。EJBからのエンティティを使用しているGWT

しかし、それらのエントリーを定義しました。典型的にはEJB(構造Webプロジェクト、ejbプロジェクトを想像してください)。あなたはRPCサービスを介してそれらのエントリーを受け取ることができますが、コンポーネントでこれらのエンティティを使用することはできません(このプロジェクトのjarファイルを追加するだけで助けになることはありません)。最初の可能性は、多かれ少なかれ同じ属性を持つ他の値オブジェクトに変換することですが、このWebプロジェクトで定義されています。しかし、これはエンティティを変更するときに、対応するビュー値オブジェクトを変更する必要があるため、決してうまくいかないコードの重複です。このようなことを自動的に行う方法は、いくつかのオプションがあります(たとえば、悲しいかなか遅い...)。

だから、問題は、いくつかの典型的なエレガントなソリューションやデザインパターンは、コードの重複なしでこれを解決する方法ですか?おかげでたくさんの

答えて

0

私は多分それが正しいものである場合には解決策が、イムはわからないことが判明しました。 問題を少し正確に指定します。私はこの構造を持っています。

/MyApp/Ejb-module/x/y/z/MyClass.java 
/MyApp/Web-module/x/y/MyApp.gwt.xml 

とどこでもそれを移動する必要がありなしMyClass.javaにGWTコンパイラを含めたいです。

私はちょうど/MyApp/Ejb-moduleビルドも*.javaファイルをインクルードすることを定義したと私は

<module> 
    <source path="z" /> 
</module> 

を入れて、

<inherits name="x.y.Inclusion"/> 
0
  1. (例えばcom.example.common)別のパッケージ/ディレクトリにEJBを入れて、あなたのGWTモジュール記述子(xyz.gwt.xml)に、ソースの宣言を追加します。

    <source path="common"/> //relative to your xyz.gwt.xml location 
    

    GWTコンパイラはまた、EJBをコンパイルし、他のGWTコードにも表示されます。

  2. スーパーソーシングを使用して「偽の」EJBアノテーションクラスを作成します。これはクラスをGWTバージョンに置き換える一般的な手法です。ここで説明:http://fredsa.allen-sauer.com/2009/04/1st-look-at-app-engine-using-jdo.html

+0

MyApp.gwt.xmlを更新どこその後、/MyApp/Web-module/a/bに、私は私が持っているだろうInclusion.gwt.xmlをadddedそれを見て – glu

+0

私は見ましたが、これが私に合っているかわかりません。私の問題は、私のような構造があることです:/MyApp/Ejb-module/x/y/z/MyClass.java、/MyApp/Web-module/a/b/MyApp.gwt.xmlと私は単にsrcをインクルードしたいGWTコンパイラの/ MyApp/Ejb-module/x/y/zからのファイル。もし私がうまくスーパーソーシングを理解していれば。/MyApp/Web-module/a/bの下に任意の名前でフォルダを作成し、x/y/z/MyClass.javaファイルを置き、MyApp.gwt.xmlにスーパーソースタグを使用する必要があります。しかし、私はMyClass.javaを移動したくありません。私は相対パスを指定することができますいくつかの感謝を想像してIm。例えば。 ../../../../Ejb-module/x/y/z/MyClass.java – glu

関連する問題