2012-03-26 74 views
3

我想要產生以下行爲:GWT Atmosphere + RequestFactory

瀏覽器中的用戶保存一些實體。在實體保存在服務器端後,它會生成通知,並且必須通過Atmosphere以更新的實體實例的方式通知所有其他客戶端。

所以問題是我怎麼能通過大氣界面推POJO實體? 最後一個支持Serializable類型通過線傳輸,而RequestFactory有另一個序列化機制。

所以我需要將POJO實體轉換爲autobean,因爲這是通過RF完成的併發送給客戶端。任何人都知道如何做到這一點?

+0

爲什麼你需要使用RequestFactory? – Andrejs 2012-03-26 16:04:18

+0

由於許多來源的建議) – 2012-03-27 07:25:53

回答

7

您可以使用create AutoBeans並在您的客戶端代碼中使用它們代替POJO。 AutoBeans可以很容易地在GWT中從JSON序列化到JSON並且可以傳輸JSON。 這就是我在我的基於網絡套接字的GWT應用程序中所做的。

在服務器上,您可以創建您在客戶端上使用的同一個AutoBean工廠。相反GWT.create我們使用AutoBeanFactorySource:

MyDataFactory factory = AutoBeanFactorySource.create(MyDataFactory.class) 
AutoBean<MyData> myDataAutoBean = factory.myData(); 
MyData data = myDataAutoBean.as(); 
data.setValue(1); // call all kinds of setters 

// to converto AutoBean to JSON 
String json = AutoBeanCodex.encode(myDataAutoBean).getPayload(); 

在客戶端,我們使用AutoBeanCodex以JSON解碼成一個AutoBean

+0

你能寫幾串代碼如何在服務器端創建autobean嗎?這就是我要找的! – 2012-03-27 07:30:38

+0

請參閱我的編輯答案例如代碼 – Andrejs 2012-03-27 08:02:28

+0

謝謝!你知道AutoBean中是否有嵌入式機制將所有屬性複製到autobean?你使用反射嗎? – 2012-03-27 08:06:35