2015-01-03 128 views
0

可能是什麼錯我的代碼:序列化POJO與純GWT

String serializeToJson(MyModel model) { 
    // Retrieve the AutoBean controller 
    AutoBean<MyModel> bean = AutoBeanUtils.getAutoBean(model); 
    return AutoBeanCodex.encode(bean).getPayload(); 
} 

即使模型對象不是null值/字段設置。返回的Stringnull

+0

MyModel是一個接口嗎?你是如何創建你的MyModel實例的?請張貼足夠的代碼來做更多的事情,而不是猜測什麼可能是錯誤的。 –

+0

MyModel是一個具體的類,模型是MyModel的一個實例,其中設置了字段和值。 – xybrek

回答

1

Autobeans使用接口,即只有聲明getter和setter方法。雖然您可以創建該類的具體實例,但它沒有AutoBean<MyModel>表示法,所以無法獲得神奇的序列化,至少不容易。

這是而不是一個神奇的DWIM序列化工具 - 它是一種描述看起來像Java對象的數據的方式,但是支持最適合您的用例的任何東西。使用Java對象(比如對象中的循環,多態等)可能發生的事情對於AutoBeans來說是不可能的,它們根本不是爲它設計的,如果它們設計成而不是就可以做到這一點。

檢查從上面的代碼AutoBeanUtils.getAutoBean的結果 - 它可能返回null,因爲在你的MyModel實例中沒有AutoBean

請參閱GWT AutoBean with POJO class instead of interface瞭解有關此問題的其他討論,以及http://www.gwtproject.org/doc/latest/DevGuideAutoBeans.html瞭解如何正確使用autobeans。

+0

因此,沒有可能的解決方案使用純GWT序列化GWT POJO? – xybrek

+0

這個怎麼樣:http://grepcode.com/file/repo1.maven.org/maven2/com.extjs/gxt/2.0.1/com/extjs/gxt/ui/client/js/JsonConverter.java – xybrek

+0

'所以沒有可能的解決辦法...?'不,有解決方案,但這不是。不要問'可以做B嗎?'如果你想知道'B可以完成嗎?'。鏈接的代碼顯然不適合讀取方法簽名的任務 - 它返回一個「Map 」。 GWT RPC就是一種這樣的工具,可以將POJO序列化,Piriti是另一種工具,而Errai也有自己的機制。 –