動的コマンドを使用するパセリ フレームワークで 1 つのアプリケーションを開発しています。
サンプルコードはこちら
public class MyCommand extends EventDispatcher
{
[Inject]
public var service:IService;
[Inject(id="model")]
public var model:TestModel;
public function execute(message:TestMessage):AsyncToken
{
return service.getResponse(message.requestObject);
}
public function result(data:Object):void
{
//Here i want to find out the response is for message type1 or message type2, that called the service.
var result:ByteArray=data as ByteArray;
var response:ArrayCollection=result.readObject() as ArrayCollection;
model.data=response;
}
//faultCode, faultDetail, faultString, rootCause
public function error(info:Object):void
{
dispatchEvent(new AlertEvent(AlertEvent.SHOW_ALERT,"Service Loading Error",
"There was an error in the application"));
}
}
メッセージ クラス
public class TestMessage
{
public static const Type1:int=0;
public static const Type2:int=1;
private var _type:int;
private var _requestObject:RequestObjectHelper;
[Selector]
public function get type():int
{
return _type;
}
public function set requestObject(value:RequestObjectHelper):void
{
_requestObject = value;
}
public function get requestObject():RequestObjectHelper
{
return _requestObject;
}
public function TestMessage(type:int)
{
_type=type;
}
}
RequestObject クラス
public class RequestObjectHelper
{
private var _url:String;
private var _resultFormat:String;
private var _noCacheParam:Object;
//getters and setters
}
メッセージディスパッチコード
public function handleViewInitialized():void
{
var requestObject:RequestObjectHelper;
var message:TestMessage;
//msg1
requestObject=new RequestObjectHelper();
requestObject.url="url1";
requestObject.resultFormat="amf";
message=new TestMessage(TestMessage.Type1);
message.requestObject=requestObject;
dispatcher(message);
//msg2
requestObject=new RequestObjectHelper();
requestObject.url="url2";
requestObject.resultFormat="amf";
message=new TestMessage(TestMessage.Type2);
message.requestObject=requestObject;
dispatcher(message);
}
上記のコードが簡単に理解できることを願っています。できるだけシンプルにしようとしました。このコードから欲しいのは、サービス応答が到着したときに呼び出される MyCommand クラスの結果メソッドから、どのタイプのメッセージがサービスを呼び出したかをどのように識別できるかということです。