2012-08-22 57 views
0

這裏是我想要送類:類不會使用GWT-RPC進行序列化?

public class DummyClass implements Serializable, IsSerializable { 

    private Map<String, Object> properties = new HashMap<String, Object>(); 


    public DummyClass() { 
    // stuff 
    } 
    public Object getValue(String key) { 
    return properties.getValue(key); 
    } 
    public void setValue(String key, Object value) { 
    properties.put(key, value); 
    } 
} 

但是當我嘗試把它發送作爲參數傳遞給在GWT RPC的方法,我得到一把傘例外。

DummyClass dummy = new DummyClass(); 
    dummy.setValue("foo", "bar"); 
    ServiceImpl impl = Gwt.create(SampleService.class).doSomething(dummy); 

我可以消除在Map properties指定的泛型類型......但除此之外ObjectSerializable有沒有限制什麼可以存儲在屬性映射。

使用Java的標準序列化,類的實例序列化很好。

此外,GWT編譯器沒有顯示任何警告或錯誤。

有沒有人可以指出,我可以嘗試讓這個工作?

+0

Java序列化的基礎知識:要求Java序列化Object類型,就像給銀行出納員一張空白支票並告訴出納員你希望在支票中存入銀行。永遠不要在RPC數據傳輸對象中封裝/嵌入一個不確定的對象。 –

+0

那麼我怎麼能發送一個字符串鍵映射到各種值(類型如日期,字符串,整數)?這個序列化使用Java序列化就好了...... – Cuga

回答

0

也許你可以嘗試用更具體的東西(例如java.io.Serializable)替換返回類型getValue()和參數類型setValue()方法。

請注意,如果您的對象只實現了Serializable(除此之外不需要執行IsSerializable),那麼您也很好。

+0

可序列化非常普遍,並且會導致編譯器找到實現Serializable並且位於源路徑上的_all_類。這將導致爲它們及其所有子類生成場序列化器。確保在引起這個特殊品牌的臃腫之前,這真的是你想要的。 –

+0

對 - 確實應該提供更具體的類型。 –

+0

這沒有幫助....用'可序列化'替換通用參數'對象'... – Cuga

相關問題