我有一些实现序列化的Java类,以及实现IExternalizable的相应AS对象(由GAS自行生成)。
从服务器接收对象没有问题,但是当我尝试将对象发送到服务器时 - 它会引发异常:
[BlazeDS]Class 'xxx' must implement java.io.Externalizable to receive client
IExternalizable instances. flex.messaging.io.SerializationException: Class 'xxx' must
implement java.io.Externalizable to receive client IExternalizable instances.
我真的必须实现Externalizable来将对象发送到Java服务器吗?!
答案 0 :(得分:1)
实际上,我不必实现Externalizable,甚至不能实现Serializable。 相反,我只需要在flex方面指定它是一个带有别名的远程类,它指向完整的java类路径。我还应该确保属性名称(或getter和setter)等于java对象属性名称。最后,我应该确保对象/属性类型匹配或转换得很好(数字java对象到Flex等中的Number)。
答案 1 :(得分:0)
您必须实施Externalizable。
在ActionScript和Java之间使用自定义序列化
如果客户端上的ActionScript与服务器上的Java之间的数据序列化和反序列化的标准机制不能满足您的需求,您可以编写自己的序列化方案。您可以在客户端上实现基于ActionScript的flash.utils.IExternalizable接口,并在服务器上实现相应的基于Java的java.io.Externalizable接口。