Apache flex TypeError:错误#1034:类型强制失败:无法转换Object@1456c7b9到mx.messaging.messages.IMessage
我正在尝试将Flash客户端连接到BlazeDS。其他使用vanilla BlazeDS设置的用户在这方面取得了一些成功。然而,我正在使用springsource提供的新的SpringBlazeDS集成并搁浅。 flash客户端实际上似乎在工作,因为我可以在返回对象的主体中看到正确的数据,但是由于未知的原因,它无法作为IMessage进行转换。它在此行轮询Channel.as失败,主题行错误Apache flex TypeError:错误#1034:类型强制失败:无法转换Object@1456c7b9到mx.messaging.messages.IMessage,apache-flex,flash,actionscript-3,casting,Apache Flex,Flash,Actionscript 3,Casting,我正在尝试将Flash客户端连接到BlazeDS。其他使用vanilla BlazeDS设置的用户在这方面取得了一些成功。然而,我正在使用springsource提供的新的SpringBlazeDS集成并搁浅。 flash客户端实际上似乎在工作,因为我可以在返回对象的主体中看到正确的数据,但是由于未知的原因,它无法作为IMessage进行转换。它在此行轮询Channel.as失败,主题行错误 var messageList:Array = msg.body as Arra
var messageList:Array = msg.body as Array;
for each (var message:IMessage in messageList) <--
我有一个flex客户端,它在相同的目的地/频道上100%工作。标题中的错误意味着您出于某种原因获得了一个对象,该对象没有实现或扩展IMessage接口,因此循环无法在此部分强制转换它:
for each (var message:IMessage in messageList){
您应该以某种方式确保不添加任何未扩展或实现IMessage的内容,或者检查变量是否实际为ext./imp.it。此外-如果您想这样做,您必须更改每个的设置,如下所示:
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()覆盖(如果可以)
查看我的博客,了解我是如何发现这一点的 我在尝试将actionscript对象发送到后端时遇到了相同的错误。我的问题是,我的c#等价对象缺少一个公共无参数构造函数,感谢您的响应。此代码位于FlexSDK的rpc部分。这是否意味着要为此问题编译一个新版本的rpc.swc。如果是在这样的SDK中,则不是错误。只需确保不要在“messageList”(即,传递给SDK函数的某个参数)中添加任何不扩展或实现IMessage接口的内容。是否存在“test”方法采用IMessage而不是MessageEvent的原因?请注意,不鼓励这样做,因此答案应该是搜索解决方案的终点(相对于另一个引用的停顿,它会随着时间的推移而变得陈旧)。请考虑在这里添加一个独立的概要,保持链接作为引用。
registerClassAlias("flex.messaging.io.ObjectProxy", ObjectProxy);