Flex / BlazeDS - результатHandler для вызова функции не для RemoteObject? - PullRequest
0 голосов
/ 16 июля 2009

Я следовал этому руководству, чтобы получить код Flex для вызова кода Java, размещенного на сервере Tomcat.

Вот как объявляются мой 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», то, очевидно, нужно будет использовать другой resultHandler. Как мне указать resultHandler на уровне функции?

Ответы [ 2 ]

4 голосов
/ 16 июля 2009

Вы можете определить свойство 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>
1 голос
/ 30 марта 2011

Просто хотел добавить: в случае, если кто-то хочет достичь этого с помощью ActionScript, вы можете сделать это с помощью ActionScript, добавив Responder к 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);
}
...