2010-11-30 9 views
2

Ich verwende BlazeDS, um Nachrichten in Flex zu senden. Innerhalb der UI-Komponente, definiert ich einen Produzenten wie unten:So identifizieren Sie die ursprüngliche Nachricht, die MessageFaultEvent auslöst

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

ich in faulthandler frage mich, wie ich in der Lage bin zu identifizieren, welche Nachricht den Fehler verursacht. Wie es scheint, gibt es keine Möglichkeit, den Verweis auf die ursprüngliche Nachricht zu erhalten.

Dies ist das Code-Snippet, wie die Nachricht erstellt und gesendet wird.

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

Vielen Dank!

Antwort

0

Es sieht nicht so aus, als ob das Producer-Objekt eine Referenz des Nachrichtenobjekts enthält. Sie können dies hinzufügen, indem Sie einfach die Producer-Klasse erweitern, die Fehlerfunktion überschreiben und ein benutzerdefiniertes Ereignis, das die Nachricht enthält, senden.

einige sudo Code:

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

} 

Dann alles, was Sie tun müssen, ist für die MyMessageEvent Ereignis hören und Ihre Mitteilung erhalten.

+0

Danke! Ich werde es versuchen! – Jingwei

+0

Danke, es funktioniert! – Jingwei

Verwandte Themen