我在GWT應用程序的客戶端部分有一個枚舉,當我嘗試運行與序列化問題有關的運行時,出現異常。我做錯了什麼?我讀過,GWT支持枚舉,我使用的是最後一個版本。GWT和枚舉的問題
枚舉:
public enum AnEnum implements Serializable {
ITEM_A("Item a description"), ITEM_B("Item b description");
private String description;
private AnEnum(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
例外:
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:742)
... 47 more
Caused by: com.google.gwt.user.client.rpc.SerializationException: Type '(...).client.(...).AnEnum' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = ITEM_A
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)
at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize(Collection_CustomFieldSerializerBase.java:43)
at com.google.gwt.user.client.rpc.core.java.util.LinkedList_CustomFieldSerializer.serialize(LinkedList_CustomFieldSerializer.java:36)
... 52 more
什麼包是在枚舉,什麼路徑在gwt.xml的源代碼上市? – 2010-11-17 20:05:06
肯定有一個問題/錯誤與枚舉和GWTRPC!我用GWT 2.0.3測試了你的代碼,並且它可以工作(甚至不需要無參數構造函數)。但是,當我在調用服務方法之前使用'setDescription(「new value」)'時,在傳輸到服務器期間,對'description'的改變**丟失** - 即服務器將'description'仍然設置爲「項目說明「。我還沒有用最新版本的GWT嘗試過,但也許Google試圖解決GWT 2.1的這個問題,但引入了序列化問題。 – 2010-11-17 23:35:44
剛剛在[documentation](http://code.google.com/webtoolkit/doc/latest/DevGuideServerCommunication.html)中找到了關於此的一些內容:「枚舉常量僅作爲名稱序列化;沒有任何字段值被序列化「。因此,在GWTRPC中使用帶有可變域的枚舉可能不是一個好主意。 – 2010-11-17 23:43:46