2012-04-17 3 views
2

Я пытаюсь отправить MyClass через RPC, но получаю: Тип MyClass не был назначен для «com.google.gwt.user.client.rpc.IsSerializable» и не имел настраиваемого поляризатора поля В целях безопасности этот тип не будет сериализован.GWT RPC serializing

Я просмотрел GWT - occasional com.google.gwt.user.client.rpc.SerializationException и попробовал их решение, но это не сработало.

Разница в том, что MyClass находится в другом проекте. Структура проекта:

MyApiProject 
-contains MyClass 
MyClientProject 
MyServerProject 

Я также попытался прохождения перечисление через RPC из MyApiProject, который также не удалось.

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

мне пришлось изменить орудия сериализуемые к реализует IsSerializable

0

Это обычно появляется, когда вы используете другой тип внутри вашего класса, который не является сериализации. Проверьте свойства своего класса и убедитесь, что все они сериализуемы, разместите здесь код MyClass, и я также могу посмотреть на него.

+0

MyClass состоит из перечисления, который сериализации по умолчанию – sworded

0

Я считаю, что для GWT необходим сериализуемый класс RPC, также имеющий открытый конструктор без аргументов.

Попробуйте удалить

private MyClass() 
    { 
    } 

или установить его в

public MyClass() 
    { 
    } 
+0

HTTP: //code.google.com/webtoolkit/doc/latest/tutorial/RPC.html#serialize в статье говорит: у него есть конструктор по умолчанию (нулевой аргумент) с * любым * модификатором доступа –