-
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条)
聪明如你,不妨在这 发表你的看法与心得 ~