2012-04-17 72 views
2

我想通过RPC发送MyClass,但得到: 类型MyClass不能分配给'com.google.gwt.user.client.rpc.IsSerializable',并且没有自定义字段串行器为了安全起见,这种类型不会被序列化。GWT RPC序列化

我已经看过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); 

回答

6

我不得不改变实现Serializable,以实现IsSerializable

0

这通常会弹出,当你使用其他类型的类里面,是不是序列化。检查你的类的属性,并确保它们都是可序列化的,在这里发布MyClass的代码,我也可以看看它。

+0

MyClass的由一个枚举,默认情况下为 – sworded 2012-04-17 18:12:26

0

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

尝试删除

private MyClass() 
    { 
    } 

或将其设置为

public MyClass() 
    { 
    } 
+0

HTTP序列化的: //code.google.com/webtoolkit/doc/latest/tutorial/RPC.html#serialize这篇文章说:它有一个默认的(零参数)构造函数,带有* any *访问修饰符 – 2013-03-14 16:25:43