【转】解决RemoteClass alias信息丢失

本文讨论了在Flex程序中,多个module调用同一个标记了RemoteClassalias的DTO类时,Java端类别名丢失导致类型转换失败的问题,并提供了在Flex端和Java端两种解决方法:在Flex端通过import和registerClassAlias进行类别名声明,以及在Java端通过自定义类型转换器进行类别名设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题发生场景:flex程序中存在多个module都调用一个标记了 RemoteClass alias 的DTO类,在java端alias 信息会丢失,导致类型转换失败。。。

java Exception:

flex.messaging.MessageException: java.lang.ClassCastException : flex.messaging.io.amf.ASObject  

 

此问题在adobe的论坛上已经证实,请参考RemoteClass alias being lost

解决此问题有两种方法:一是在flex端解决,二是在java端。

Flex端解决方法:

在要调用远程对象的Module文件里面,加上如下声明语句:

import flash.net.registerClassAlias;   
 
registerClassAlias("JAVA端的类全名",AS类名);  

 

java端解决方法:

public void test(ASObject param){   
        ASTranslator ast = new ASTranslator();//AS类型转换器   
        ASObject aso=(ASObject) param.get("data");//直接从flex得到的数据类型是Asobject   
        aso.setType("com.amc.dc.service.query.dto");//设置要转化的类型   
        ProductPositionDto p = (ProductPositionDto) ast.convert(aso, ProductPositionDto.class);//转换类型   
    }  

 

 

转载连接:http://yunzhongxia.iteye.com/blog/783847

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值