• Flex与Java通过BlazeDS传送“大“对象时问题解决

    普通类
    • 支持
    • 批判
    • 提问
    • 解释
    • 补充
    • 删除
    • 问题表现

    在电子书中需要java和Flex通过通信协议传送knowledgeObject对象,但是经常会发现电子书加载失败,无法读取ko中的数据。

    • 问题原由

    Flex和Java通信时是将knowledgeObject对象向上转换成Object,但由于KnowledgeObject对象属性太多,转换后再向下转换成flex中的as时出现对应上的序列化错误,导致在客户端无法读取内容。

    • 解决办法

    在java中只读取需要的属性值,代码如下:

    public Object loadEbookKOById(Long id) throws PersistenceException {

    String hql = "select ko.title,ko.description,ko.createTime,ko.learninggoal,ko.image,ko.id,ko.label,ko.user.nickName" +" from KnowledgeObject as ko where ko.passed=1 and ko.id="+id;return DAO.getInstance().get(hql);} 

    在flex客户端不再采取与as文件映射方式读取属性值,而是直接采用object方式读取属性值,

    代码如下:

    private var ko:Object;

    ...

    public function result(data:Object):void{

    ko = data.result;//读取到ko

    }

    ...

    下面需要的时候可以用ko[0]这种方式读取需要内容顺序和java中

    select ko.title,ko.description,ko.createTime,ko.learninggoal,ko.image,ko.id,ko.label,ko.user.nickName一致

    • 标签:
    • 属性
    • ko.id
    • 需要
    • java
    • ko
    • flex
    • knowledgeobject
    • 读取
    • 方式
    • blazeds
    • object
  • 加入的知识群:
    学习元评论 (0条)

    评论为空
    聪明如你,不妨在这 发表你的看法与心得 ~



    登录之后可以发表学习元评论
      
暂无内容~~
顶部