【问题标题】:Flex very strange casting errorFlex很奇怪的铸造错误
【发布时间】:2016-10-25 11:30:50
【问题描述】:

我的 web 应用程序基于 Flex 3.6(使用 BlazeDS)上出现错误非错误,我快疯了。我尝试描述我的问题:我有一个 java 类:

public class User {...}

和.as中的绑定一个:

[Bindable]
[RemoteClass(alias="it.dto.User")]
public class User {...}

我还有一个 DataManager.as 可以像这样进行异步调用:

public function getUser():void {
    var token:AsyncToken = _service.getUser();
    token.addResponder(new AsyncResponder(userOnResult,userOnFault));
}
private function userOnFault(event:FaultEvent,token:Object):void {
    var _fail:String = "Error";
}
private function socOnResult(event:ResultEvent,token:Object):void {
    _resUser = event.result as ArrayCollection;
    dispatchEvent(new MyEvent("USER_EVENT",_resUser));
}

现在我在两个不同的.as文件(不同的包)中实现了下面的代码,它指的是两个不同的.mxml:

var data:DataManager = new DataManager;
....
data.addEventListener("USER_EVENT",userResult);
....
data.getUser();
....
private function userResult(dataEvent:MyEvent):void {
    var user:ArrayCollection = new ArrayCollection;
    user = dataEvent.result as ArrayCollection;
    for (var i:int = 0;i<user.length; i++) {
        var u:User = new User;
        u = (User)(user.getItemAt(i));
    }
    _dm.removeEventListener("USER_EVENT",userResult);
}

戏剧是在第一个 .as 中完美运行,而在第二个 .as 中给我一个强制错误失败。在第二个文件中,它似乎无法识别 User 类。 你有什么主意吗??我要疯了!! 谢谢

@Stacktrace 错误:

TypeError: Error #1034: Type Coercion failed: cannot convert   appcode.dto::SocietaDTO@b4dbfc1 to appcode.dto.SocietaDTO.
at modules::ReportIspezioni/onSocResult()[D:\workspace\maga\aga\flex_src\modules\ReportIspezioni_src.as:80]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at appcode.dao::DataManager/socOnResult()[D:\workspace\maga\aga\flex_src\appcode\dao\DataManager.as:180]
at mx.rpc::AsyncResponder/result()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\rpc\AsyncResponder.as:82]
at mx.rpc::AsyncToken/http://www.adobe.com/2006/flex/mx/internal::applyResult()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\rpc\AsyncToken.as:199]
at mx.rpc.events::ResultEvent/http://www.adobe.com/2006/flex/mx/internal::callTokenResponders()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\rpc\events\ResultEvent.as:172]
at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\rpc\AbstractOperation.as:199]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:263]
at mx.rpc::Responder/result()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\rpc\Responder.as:46]
at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
at NetConnectionMessageResponder/resultHandler()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:524]
at mx.messaging::MessageResponder/result()[C:\autobuild\3.x\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:199]

显然上面写的User类只是为了理解代码逻辑。真正的类是一个名为 SocietaDTO 的 DTO。 注意:代码在我项目的另一个模块中完美运行。我不明白为什么在这里它不起作用。

非常感谢

【问题讨论】:

  • 实际错误和堆栈跟踪是什么
  • @junior_developer,如果您已经弄清楚这一点,请发布您的问题的答案,而不是在问题正文中编辑答案。
  • 在搜索意外行为的原因之前,请确保您已清除浏览器缓存。特别是如果您使用模块,缓存中可能会有旧的 .swf 文件,这会使您的应用程序行为异常。

标签: java apache-flex blazeds


【解决方案1】:

我在开发时从不保存浏览器缓存。无论如何我通过添加这个来解决问题:

registerClassAlias("it.mec.dto.SocietaDTO", SocietaDTO);

在课堂上进行异常启动。

还是谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2017-08-23
    相关资源
    最近更新 更多