2010-11-25 75 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.javaGWT編譯需要任何地方移動。

我只是定義了/MyApp/Ejb-module版本將包括也*.java文件,然後在/MyApp/Web-module/a/b我addded Inclusion.gwt.xml這裏我把

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

<inherits name="x.y.Inclusion"/> 
0
  1. 把你的EJB在一個單獨的封裝/目錄(如com.example.common),然後添加源聲明你的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看看吧 – glu 2010-11-25 15:33:10