2010-11-30 2 views
2

Я использую BlazeDS для отправки сообщений в Flex. Внутри компонента пользовательского интерфейса, я определил производитель, как показано ниже:Как определить исходное сообщение, которое вызывает MessageFaultEvent

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

Я задавался вопросом, в faultHandler как я могу определить, что сообщение вызывает ошибку. Как кажется, нет способа получить ссылку на исходное сообщение.

Это фрагмент кода, по которому построено и отправлено сообщение.

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

Спасибо!

ответ

0

Не похоже, что объект-производитель держится за ссылку объекта сообщения. Вы можете добавить это, просто расширив класс производителя и переопределив функцию сбоя и отправив специальное событие, содержащее сообщение.

некоторые Суд код:

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

} 

Тогда все, что вам нужно сделать, это прослушивать событие MyMessageEvent и получить ваше сообщение.

+0

Спасибо! Я попробую! – Jingwei 2010-12-01 03:58:08

Смежные вопросы