我正在尝试通过RPC发送MyClass,但我得到: 类型MyClass无法分配给“com.google.gwt.user.client.rpc.IsSerializable”,并且没有自定义字段序列化程序。出于安全考虑,此类型不会被序列化。
我查看了GWT - occasional 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);
答案 0 :(得分:6)
我必须更改实现Serializable以实现IsSerializable
答案 1 :(得分:0)
当您在类中使用不可序列化的其他类型时,通常会弹出。检查你的类的属性,并确保它们都是可序列化的,在这里发布MyClass的代码,我也可以查看它。
答案 2 :(得分:0)
我相信GWT要求RPC可序列化类也有一个公共的无参数构造函数。
尝试删除
private MyClass()
{
}
或将其设置为
public MyClass()
{
}