2010-11-30 13 views
2

J'utilise BlazeDS pour envoyer des messages dans Flex. A l'intérieur du composant d'interface utilisateur, je définissais un producteur comme celui ci-dessous:Comment identifier le message d'origine qui déclenche MessageFaultEvent

<mx:Producer id="producer" 
    destination="chat" 
    fault="faultHandler(event);"/> 

Je me demandais comment je l'intérieur faultHandler suis en mesure d'identifier ce message provoque l'erreur. Comme il semble qu'il n'y a aucun moyen d'obtenir la référence au message original.

Ceci est l'extrait de code comment le message est construit et envoyé.

 private function sendMessage():void { 
      var message:AsyncMessage = new AsyncMessage(); 
      message.body = userName.text + ": " + input.text; 
      producer.send(message); 
     } 

Merci!

Répondre

0

Ne ressemble pas à l'objet producteur qui conserve une référence de l'objet message. Vous pouvez ajouter ceci en étendant simplement la classe de producteur et en remplaçant la fonction de défaut et en envoyant un événement personnalisé qui contient le message.

un code sudo:

public class MyProducer extends Producer 
{ 

    public function MyProducer(){ 
     super() 
    } 


    override public function fault(errMsg:ErrorMessage, msg:IMessage):void 
    { 
     var evt:MyMessageEvent = new MyMessageEvent(msg) 
     dispatch(evt); 
     super(errMsg, msg); 
    } 

} 

Ensuite, tout ce que vous devez faire est d'écouter pour l'événement MyMessageEvent et faire passer votre message.

+0

Merci! Je vais essayer! – Jingwei

+0

Merci, ça marche! – Jingwei