如何使RPC可序列化?

时间:2013-02-05 11:08:09

标签: java gwt serialization

我有一个List<Foo> foos我可以毫无问题地发送给GWT RPC service。 但是,如果我将该列表包装到一个新对象中,我在启动时会遇到异常。

subtype MyDTO is not assignable to 'com.google.gwt.user.client.rpc.IsSerializable' or 'java.io.Serializable' nor does it have a custom field serializer (reached via MyDTO)

为什么我可以自己发送列表,但不能发送包装器对象?

使用:

class MyDTO {
    List<Foo> foos; //containing Rectanlges (see below)
    public MyDTO() {}

    List<Foo> getFoos() { return foos; }
    void setFoos(List<Foo> foots) { this.foos = foos; }
}

与Foo建立一个界面,如:

interface Foo {
    abstract int getX();
    abstract void setX(int x);
}

class Rectangle implements Foo {
    private int x;
    public Rectangle() {};

    //impl of foo methods
}

当然这种结构并没有多大意义,但它描述了我的问题。 如果我只是通过RPC发送List foos一切正常。

如果我发送包含foos列表的MyDTO包装器,则会引发Exception。 这有什么不对?

1 个答案:

答案 0 :(得分:4)

让MyDTO实施SerializableList默认为Serializable。