我在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