2009-07-16 3 views
0

Я последовал за this учебником, чтобы получить код Flex для вызова кода Java, размещенного на сервере Tomcat.Flex/BlazeDS - resultHandler за вызов функции не за RemoteObject?

Это как декларируется мой RemoteObject и кнопки для вызова функции удаленного:

<mx:RemoteObject id="productService" destination="productJavaService" result="resultHandler(event)" fault="faultHandler(event)"/> 
<mx:Button label="Get all Products" click="productService.getAllProducts()" /> 

Эти определения функций ResultHandler и faultHandler:

private function resultHandler(event:ResultEvent):void 
{ 
    products = event.result as ArrayCollection; 
} 

private function faultHandler(event:FaultEvent):void 
{ 
    Alert.show(event.fault.faultString); 
} 

Очевидная проблема с этим для меня то, что resultHandler ассоциируется с RemoteObject как целой, а не с отдельной функцией. Если я добавлю новую функцию, такую ​​как «getSingleProduct», то, очевидно, будет использован другой результатHandler. Как указать resultHandler на уровне функции?

ответ

4

Вы можете определить method недвижимость под номером RemoteObject, в вашем случае это будет getAllProducts(); Вы можете сделать это так:

<mx:RemoteObject id="Server" destination="ServerDestination" fault="faultHandler(event)"> 
    <mx:method name="getAllProducts" result="getAllProductsHandler(event)"/> 
    <mx:method name="getOneProduct" result="getOneProductHandler(event)"/> 
</mx:RemoteObject> 
+0

Perfect - спасибо :) – William

1

Просто хотел бы добавить: в случае, если кто-то хочет добиться этого с помощью ActionScript, вы можете сделать это с помощью ActionScript, добавив ответчику к AsyncToken от вызова службы:

var responder:Responder = new Responder(onGetOneProductResult, onGetOneProductFault); 
var token:AsyncToken = Server.getOneProduct(); 
token.addResponder(responder); 

private function onGetOneProductResult(event:ResultEvent):void { 
    // event.result is the data you sent back from the server 
    var result:Object = event.result; 
} 

private function onGetOneProductFault(event:FaultEvent):void { 
    trace("onGetOneProductFault : "+event.fault.faultString); 
} 
Смежные вопросы