2009-11-17 101 views
4

我的問題是:什麼是最好的方式發送我的Java EE註釋的實體bean的數據到 客戶端在網格中使用它,例如?當然,我可以手動爲每個實體制作BaseModel擴展的客戶端模型,但我不知道這裏最好的做法是什麼。 如果可能,我需要一步一步的教程。EXT GWT + java EE

+0

爲了這個確切的原因,我曾經放棄了Ext GWT。 – Bozho 2009-11-17 15:02:08

回答

3

我一直在使用ext-gwt(gxt)大約一年,感受你的痛苦!

從我學會爲止,似乎有對transfering豆來回客戶端和服務器之間的3個戰略:

這裏的每個策略的概述:

  1. 創建客戶端pojo/bean,它爲每個服務器端對象bean/pojo /實體bean擴展BaseModel爲 。
  2. 分享POJO/bean的客戶端和服務器 之間
  3. 轉換服務器端的POJO /豆成 JSON發送給客戶端和 然後使用JavaScript(JSON)之前在客戶端的對象 。

當然,每個人都有權衡。

策略#1很好地集成到gxt中。您可以使用gxt的內置商店和綁定。這是我在生產應用程序中使用的策略,並且它已經工作,但是我發現在客戶端和服務器上覆制bean非常繁瑣。就我個人而言,我也發現extjs的(和gxt的)存儲/綁定機制可能過於複雜並且難以擴展到角落案例。

策略#2:這是我很可能用於我的下一個gxt項目的策略。缺點是你必須在客戶端上做你自己的格式和網格綁定。但好處是你可以分享你所有的豆子/豆莢。以下是實現細節的快速概覽:

在您的服務器端src樹中,將.gwt.xml文件添加到包含您的服務器pojo/bean類的根包中。例如:我創建這個文件下com.daveparoulek.gwt.server.models

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

在上面的例子中名爲「GWT-models.gwt.xml」,豆實際上位於內com.daveparoulek.gwt .server.models.client。

一旦你有了這個設置,你可以通過在你的gwt客戶端項目的gwt.xml文件中添加一個「inherit」標籤來配置你的客戶端gwt項目,以便在com.daveparoulek.gwt.server.models中包含src代碼,例如:

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

戰略#3:看從谷歌上的GWT幾會談結束後,這似乎是處理在客戶端對象的首選方式。雖然,這導致爲每個服務器端pojo/bean創建一個json覆蓋類型。這也不適合gxt世界。 Click here爲這個概念的一個很好的介紹。

+0

謝謝您的意見,並抱歉回答遲到!我要深入自己的策略#3,並檢查基列,然後決定哪些對我來說是最好的。 – Pecc 2009-11-19 16:38:59

+0

你好!我決定手動嘗試戰略#1。但是,我對此有一些疑問: – Pecc 2009-11-29 09:15:18

+0

- 由於gwt無法通過rpc傳送實體bean,並且BeanModelFactory無法在服務器端gwt中使用,因此似乎必須先爲每個實體創建一個DTO類,然後發送這個DTO通過rpc,然後將其轉換爲客戶端的BeanModel。我對嗎? – Pecc 2009-11-29 09:16:07

0

我不是專家,但似乎人們使用Gilead(它有一個教程)+ GWT + GXT來簡化這個過程。

0

BeanModelFactory是一個巨大的浪費你的時間。根據Sencha help docs,您可以調用getFactory,以瞭解BeanModelFactory從調用返回的靜態方法get()。當遵循它們的例子時,這個返回值證明是BeanModelFactory類本身的一個實例,它有一個未實現的(抽象的)getFactory()方法。

因此,你從空中獲得一個不錯的空指針。什麼也沒有。

我會堅持戰略#1。