0

我已经按照教程获取了一些 Flex 代码来调用托管在 Tomcat 服务器上的 Java 代码。

这就是我的 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?

4

2 回答 2

4

您可以在 a 下定义一个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>
于 2009-07-16T14:56:39.150 回答
1

只是想补充一点:如果有人想使用 actionscript 来实现这一点,您可以通过将 Responder 添加到从服务调用返回的 AsyncToken 中来使用 actionscript 来做到这一点:

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);
}
于 2011-03-30T18:01:46.930 回答