2

我正在尝试通过 RPC 通过 MyClass 发送,但得到:类型 MyClass 不可分配给 'com.google.gwt.user.client.rpc.IsSerializable' 并且没有自定义字段序列化程序。出于安全目的,此类型不会被序列化。

我查看了GWT - 偶尔 com.google.gwt.user.client.rpc.SerializationException并尝试了他们的解决方案,但没有奏效。

不同之处在于 MyClass 位于另一个项目中。项目结构为:

MyApiProject
-contains MyClass
MyClientProject
MyServerProject

我还尝试通过 MyApiProject 的 RPC 传递枚举,但也失败了。

public class MyClass
    implements Serializable
{
    private static final long serialVersionUID = 5258129039653904120L;

    private String str;

    private MyClass()
    {
    }

    public MyClass(String str)
    {
        this.str = str;
    }

    public String getString()
    {
        return this.str;
    }
}

在 RemoteService 我有:

mypackage.MyClass getMyClass();

在 RemoteServiceAsync 我有:

void getMyClass(AsyncCallback<mypackage.MyClass> callback);
4

3 回答 3

6

我不得不将实现 Serializable 更改为实现 IsSerializable

于 2012-04-18T20:35:01.510 回答
0

当您在类中使用另一种不可序列化的类型时,这通常会弹出。检查你的类的属性,确保它们都是可序列化的,把 MyClass 的代码贴在这里我也可以看看。

于 2012-04-17T17:43:17.457 回答
0

我相信 GWT 需要一个 RPC 可序列化的类也有一个公共的无参数构造函数。

尝试删除

   private MyClass()
    {
    }

或将其设置为

   public MyClass()
    {
    }
于 2012-04-17T22:38:12.677 回答