Agora, se me permite uma outra dica, eu faço assim há anos:
//tenho uma classe chamada ObjetoRemoto:
package Servicos
{
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.mxml.RemoteObject;
public class ObjetoRemoto extends RemoteObject
{
//como pode ver, as funções não são obrigatórias, vc pode simplesmente
querer fazer
//alguma coisa no banco sem pegar retorno nenhum, mas sempre é bom passar
no mínimo
//a função de falha para ter certeza de que a instrução foi executada
corretamente.
public function ObjetoRemoto(classe:String, rstSucesso:Function = null,
rstFalha:Function = null)
{
this.destination = "fluorine";
this.source = classe;
this.showBusyCursor = true;
this.addEventListener(FaultEvent.FAULT, rstFalha);
if (rstSucesso != null)
this.addEventListener(ResultEvent.RESULT, rstSucesso);
}
}
}
//tenho outra classe de integração que vai usar o ObjetoRemoto:
package Mapeamentos.Faturamento.Expedicao.Pedidos
{
//importa o ObjetoRemoto
import Servicos.ObjetoRemoto;
//caminho da classe de integração do servidor, no meu caso C#:
[RemoteClass(alias="Integracao.Faturamento.Expedicao.Pedidos.IntPedidosFat")]
public class IntPedidosFat
{
public static const NAMESPACE:String =
"Integracao.Faturamento.Expedicao.Pedidos.IntPedidosFat";
public function IntPedidosFat():void{}
//os métodos no flex e no servidor têm que ter, como sabe, a mesma
assinatura:
public static function getItensPedido(idEmpresaPvda:String,
idPedidoPvda:String, rstSucesso:Function, rstFalha:Function):void
{
//instanciando o ObjetoRemoto:
var remoto:ObjetoRemoto = new ObjetoRemoto(NAMESPACE, rstSucesso, rstFalha);
//passo então os parâmetros recebidos (as duas strings):
remoto.getOperation("getItensPedido").send(idEmpresaPvda, idPedidoPvda);
}
}
}
//na classe onde vou pegar os ítens do pedido, o método que faz a chamada
fica +- assim:
import Mapeamentos.Faturamento.Expedicao.Pedidos.IntPedidosFat;
var empresa:String = "123";
var pedido:String = "456";
IntPedidosFat.getItensPedido(empresa, pedido
,function(evt:ResultEvent):void{
//faz o que achar necessário com o evt.result
}
,function(evt:FaultEvent):void{
//mostra mensagem com o erro contido em evt.message
}
);
//como vê, ao invés de criar separadamente as duas funções, já passo direto
no parâmetro
//a função pronta executando o que eu preciso. é mais fácil na hora de
debugar. a outra forma seria assim:
IntPedidosFat.getItensPedido(empresa, pedido, rstFnc, falFnc);//passo os 4
parâmetros: 2 strings e 2 functions
//e em algum lugar no cógigo as duas funções separadas:
private function rstFnc(evt:ResultEvent):void{
//faz o que achar necessário com o evt.result
}
private function falFnc(evt:FaultEvent):void{
//mostra mensagem com o erro contido em evt.message
}
espero ter ajudado, quem criou essa lógica foi um colega de trabalho, muito
bom programador e analista
por sinal, e não vejo forma melhor de se fazer a integração. se algém tiver
uma forma melhor não critique,
mas repasse para que outras pessoas possam aprender. além destas classes
usamos também as classes de
negócio onde passamos, ao invés de 2 strings, um objeto pronto com vários
parâmetros, mas isso já é outra história.
abraço. e bom trabalho.
Em sexta-feira, 8 de novembro de 2013 08h40min28s UTC-2, Leonardo Oliveira
escreveu:
>
> Edinei, não testei, mas na teoria você não pode declarar a variável
> string. Veja qual é o tipo do "metodoVariavel", se for Function, você tem
> que declarar a variável do mesmo tipo. Então ficaria assim:
>
> var metodoVariavel:Function = meuMetodo;//sem aspas pq é uma função
> meuObjetoRemoto.metodoVariavel.send();
>
> //aí você faria a sua função personalizada à parte
> private function meuMetodo():void{}
>
> Como disse, não testei, mas veja aí se funfa.
>
>
> Em quarta-feira, 6 de novembro de 2013 14h30min01s UTC-2, Ednei Gonçalves
> escreveu:
>>
>> Olá pessoal,
>>
>> eu tenho um RemoteObject e eu gostaria de chamar um método sendo que o
>> nome do método está contido em uma variável.
>>
>> Hoje eu faço assim:
>>
>> meuObjetoRemoto.meuMetodo.send();
>>
>> Gostaria de saber se tem como fazer algo do tipo assim:
>>
>> var metodoVariavel:String = "meuMetodo";
>>
>> meuObjetoRemoto.metodoVariavel.send();
>>
>>
>> Como eu faço isso? Há como?
>>
>>
>> Valeu.
>>
>
--
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
---
Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos
Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um
e-mail para [email protected].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.