Как определить оригинальное сообщение, которое запускает MessageFaultEvent - PullRequest
2 голосов
/ 30 ноября 2010

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

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

Спасибо!

1 Ответ

0 голосов
/ 30 ноября 2010

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

некоторый код 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);
    }

}

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

...