Почему гибкий удаленный объект не сможет работать с пользовательским компонентом?
Пожалуйста, просветите этот гибкий нуб. У меня есть удаленный объект в моем main.mxml. Я могу вызвать функцию службы из функции init() на моем main.mxml, и мой отладчик java вызывает точку останова. Когда я перемещаю объявление удаленного объекта и вызов функции в пользовательский компонент (который объявлен в main.mxml), удаленная функция на стороне java больше не вызывается, никакие точки останова не срабатывают, нет ошибок, тишина.
Как это могло произойти? Никаких орфографических ошибок или чего-то в этом роде. Что я могу сделать, чтобы понять это?
код mxml:
& # 060 mx:RemoteObject id="myService" destination="remoteService" endpoint="${Application.application.home}/messagebroker/amf" & # 062 & # 060 /mx:RemoteObject & # 062
вызов функции - это просто 'myService.getlist();'
когда я перемещаю его в пользовательский компонент, я импортирую mx.core.Application; так что компилятор не кричит
мой дочерний компонент: child.mxml
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" >
<mx:Script>
<![CDATA[
import mx.core.Application;
public function init():void {
helloWorld.sayHello();
}
]]>
</mx:Script>
<mx:RemoteObject id="helloWorld" destination="helloService" endpoint="$(Application.application.home}/messagebroker/amf" />
<mx:Label text="{helloWorld.sayHello.lastResult}" />
</mx:Panel>
мой main.mxml:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" xmlns:test="main.flex.*" >
<mx:Script>
<![CDATA[
[Bindable]
public var home:String;
[Bindable]
public var uName:String;
public function init():void {
//passed in by wrapper html
home = Application.application.parameters.appHome;
uName = Application.application.parameters.uName;
}
]]>
</mx:Script>
<test:child />
</mx:Application>
2 ответа
Дочерние компоненты вызывают creationComplete перед родителем (поэтому home имеет значение null). Решение состоит в том, чтобы выбросить событие (например, InitDataCompleted) из родительского объекта после того, как вы прочитали данные, и в дочерних компонентах прослушать это событие (поэтому не полагайтесь на creationcomplete в дочернем).
Однако важнее то, как вы можете диагностировать подобные проблемы в будущем. Простой инструмент, такой как прокси (например, Чарльз), должен помочь.
Для вашего конечного значения у вас есть
endpoint="$(Application.application.home}/messagebroker/amf"
Почему вы используете $(до Application.application... Это должно быть {как в:
endpoint="{Application.application.home}/messagebroker/amf"