将java Byte []映射到actionscript ByteArray时出错

时间:2011-10-06 04:49:00

标签: flex mapping bytearray graniteds

上下文 - GraniteDS + JPA DataNucleus + MySQL

场景是在db。中存储/检索图像。

问题在于检索FROM db。书籍封面是获取的 从db开始,但在flex前面它显示为null。

从java“Byte []”到flex“ByteArray”的转换返回null。

以下是2个类文件。

AcrionScript类

[RemoteClass(alias="com.app.model.Book")]
public class Book
{
    public var id:uint;
            public var cover:ByteArray;
    }

Java类

@Entity public class Book实现Serializable {

@Id
private Long id;

@Lob
@Basic(fetch=FetchType.EAGER)
private Byte[] cover = null;

}

由于

1 个答案:

答案 0 :(得分:1)

这似乎是一个序列化问题。

带有大写字母B的

Byte是一个包装类,它比byte原始对象更精细。

这是一个重要的事实,因为AMF序列化器/解串器与内省一起工作 所有非基本对象都必须具有包含通信通道两端所有公共属性的特定类。

Byte类不是基本类型,因此默认情况下AMF序列化器/反序列化器不会识别它,因此从java发送到Flex的每个Byte[]对象都将自动转换为空。

尝试将Byte[]更改为byte[]并查看是否适合您。

如果您确实需要使用字节[],请查看writing custom serialization classes上的花岗岩文档,以便能够传输Byte个对象。
请记住,这将要求您在Flex端编写反序列化器/序列化器,并且在性能方面可能不是一个好的选择。

干杯