2016-10-25 10 views
0

ウェブアプリケーションのFlex 3.6ベース(BlazeDSを使用)でエラーなしでエラーが発生します。私は私の問題を説明しよう:私は、Javaのクラスを持っている:フレックス非常に奇妙なキャストエラー

public class User {...} 

との.asで結合1:

[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)); 
} 

は、今は二つの異なる.mxmlを指し、二つの異なるの.asファイル(別のパッケージ)に次のコードを実装:

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); 
} 

ドラマは最初のものです。それは完全に動作し、2番目のものです。強制的なエラーが発生しました。 2番目のファイルでは、Userクラスを認識できないようです。 あなたは何か考えていますか?私は怒っているよ!

TypeError: Error #1034: Type Coercion failed: cannot convert appcode.dto::[email protected] 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] 

Obviusly上に書いたUserクラスは、コードのロジックを理解するために、ちょうど例えばです: は

@Stacktraceエラーありがとうございます。実際のクラスは、DTOがSocietaDTOを呼び出しているクラスです。 N.B:私のプロジェクトの別のモジュールでコードが完璧に動作しています。なぜここで動作しないのかわかりません。

どうもありがとう

+0

あなたはこれを考え出したのではなく、質問本体にに答えを編集した場合、実際のエラーとスタックトレース – Clintm

+0

@junior_developer何であるか、あなたの質問への答えを投稿してください。 – Brian

+0

予期しない動作の原因を検索する前に、ブラウザキャッシュをクリアしてください。特にモジュールを使用している場合は、キャッシュ内に古い.swfファイルが存在するため、アプリケーションの動作が異常になります。 – splash

答えて

0

開発するとき、私は、ブラウザのキャッシュを保存することはありません...とにかく私はこれを追加することで問題を解決:クラスで

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

は例外打ち上げました。

とにかく感謝

関連する問題