TypeError:错误#1034:类型强制失败:无法将Object @ 1456c7b9转换为mx.messaging.messages.IMessage
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeError:错误#1034:类型强制失败:无法将Object @ 1456c7b9转换为mx.messaging.messages.IMessage相关的知识,希望对你有一定的参考价值。
我试图将Flash客户端连接到BlazeDS。其他人使用vanilla BlazeDS设置取得了一些成功。但是我正在使用springource的新Spring BlazeDS集成并搁浅。 Flash客户端实际上似乎正在工作,我可以在返回的对象的主体中看到正确的数据,但由于某种原因未知它无法作为IMessage进行转换。它在主题行错误的此行上的PollingChannel.as失败
var messageList:Array = msg.body as Array;
for each (var message:IMessage in messageList) <--
在应用程序加载时,我注册了一大堆类,如此
registerClassAlias(“flex.messaging.messages.RemotingMessage”,RemotingMessage); registerClassAlias(“mx.messaging.messages.IMessage”,IMessage);等等..
我的代码基本上是
var channelSet:mx.messaging.ChannelSet = new mx.messaging.ChannelSet();
var channel:mx.messaging.channels.AMFChannel = new AMFChannel("my-amf", "http://localhost:8400/SpringA/messagebroker/amf");
channelSet.addChannel(channel);
var consumer:mx.messaging.Consumer = new Consumer();
consumer.channelSet = channelSet;
consumer.destination = "simple-feed";
consumer.subscribe();
consumer.addEventListener(MessageEvent.MESSAGE, test);
private function test(event:IMessage)
{
trace("msg..");
// breakpoint never makes it here
}
我有一个Flex客户端100%使用相同的目标/通道。
标题中的错误意味着您由于某种原因得到了一个没有实现或扩展IMessage接口的对象,因此循环无法在此部分中强制转换它:
for each (var message:IMessage in messageList){
您应该以某种方式确保不添加任何未扩展或实现IMessage的内容,或检查变量IS是否实际为ext./imp。它。另外 - 如果你想这样做,你将不得不像这样改变每个:
for each (var obj in messageList){
if (obj is IMessage){
var message:IMessage = obj as IMessage;
// DO STUFF HERE
}
}
添加此对象映射:
registerClassAlias("flex.messaging.io.ObjectProxy", ObjectProxy);
如果在Java VO对象上覆盖了hashcode()方法,则可能会发生这种情况。
删除hashcode()覆盖(如果可以)。
有关我如何发现这一点的背景故事,请参阅我的博客。 http://squaredi.blogspot.com/2013/12/remoting-landmine-without-stack-trace.html
尝试将actionscript对象发送到后端时,我遇到了同样的错误。我的问题是我的c#等效对象缺少一个公共无参数构造函数。
以上是关于TypeError:错误#1034:类型强制失败:无法将Object @ 1456c7b9转换为mx.messaging.messages.IMessage的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:错误#1034:类型强制失败:无法将Object @ 1456c7b9转换为mx.messaging.messages.IMessage
TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::MouseEvent@73b7cc1 转换为 mx.events.ItemClickEvent。(