1

我有一个我可以毫无问题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 包装器,则会引发提到的异常。这里有什么问题?

4

1 回答 1

4

使 MyDTO 实现SerializableList默认情况下是可序列化的。

于 2013-02-05T11:11:36.497 回答