DClick

Invocando métodos remotos dinamicamente utilizando RemoteObject


Muitos sabem como invocar um método utilizando RemoteObject, tanto no mxml quanto em uma classe ActionScript, mas com fazer se o nome do método é resolvido dinamicamente como, por exemplo, chamar um método que o nome seja o valor do texto de um TextInput?

No exemplo abaixo vou mostrar como se faz tanto utilizando a classe mx.rpc.remoting.mxm.RemoteObject, usado em um mxml e
mx.rpc.remoting.RemoteObject, usado em uma classe ActionScript.

Segue o código:

CODE:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.     initialize="initApp(event)">
  4.     <mx:Script>
  5.         <![CDATA[
  6.             import mx.controls.Alert;
  7.             import mx.events.FlexEvent;
  8.             import mx.rpc.events.FaultEvent;
  9.             import mx.rpc.events.ResultEvent;
  10.            
  11.             private var remoteCallAS:RemoteObject;
  12.            
  13.             private function initApp(event:FlexEvent):void
  14.             {
  15.                 remoteCallAS = new RemoteObject("remoteCall");
  16.                 remoteCallAS.showBusyCursor = true; 
  17.                 remoteCallAS.addEventListener(ResultEvent.RESULT, resultHandler);
  18.                 remoteCallAS.addEventListener(FaultEvent.FAULT, faultHandler);
  19.             }
  20.            
  21.             private function resultHandler(event:ResultEvent):void
  22.             {
  23.                 Alert.show("resultado chegou!");
  24.             }
  25.            
  26.             private function faultHandler(event:FaultEvent):void
  27.             {
  28.                 Alert.show("chamada falhou!");
  29.             }
  30.         ]]>
  31.     </mx:Script>
  32.    
  33.     <mx:RemoteObject id="remoteCall" destination="remoteCall"
  34.         result="resultHandler(event)" fault="faultHandler(event)"
  35.         showBusyCursor="true" />
  36.    
  37.     <mx:HBox>
  38.         <mx:Label text="Nome do método" />
  39.         <mx:TextInput id="methodName" text="teste" />
  40.     </mx:HBox>
  41.    
  42.     <mx:RadioButtonGroup id="roGroupSelector" />
  43.    
  44.     <mx:RadioButton groupName="roGroupSelector"
  45.         label="Usando mx.rpc.remoting.mxml.RemoteObject" value="0" selected="true" />
  46.     <mx:RadioButton  groupName="roGroupSelector"
  47.         label="Usando mx.rpc.remoting.RemoteObject" value="1" />
  48.    
  49.     <mx:Button label="invocar">
  50.         <mx:click>
  51.             <![CDATA[
  52.                  roGroupSelector.selectedValue == 0 ?
  53.                     remoteCall[methodName.text].send('param1', 'param2') :
  54.                     remoteCallAS[methodName.text].send('param1');
  55.             ]]>
  56.         </mx:click>
  57.     </mx:Button>
  58.    
  59. </mx:Application>

Por Henrique Marino em 1/June/2007 | Comentar | Trackback


No Translations

Adicionar comentário

(requerido)
(requerido, não será publicado)