Boa noite, pessoal! Este é meu primeiro post e gostaria que vocês me ajudassem com uma dúvida. Eu preciso retornar o resultado de uma requisição (feita através de remote object) para uma variável qualquer, para então eu manipulá-la. Não quero utilizar um ModelLocator e nem adicionar uma propriedade à minha classe somente para armazenar este resultado - pois me cheira POG utilizar qualquer uma das alternativas para este propósito. Vamos ao caso:
Temos uma classe "Authentication", cujo objetivo é encapsular os métodos e atributos que cuidam do acesso ao aplicativo em questão e também uma classe "User", responsável por gerenciar as informações dos usuários. Ambos são arquitetados como TOs (transfer objects), e extendem uma abstração chamada "DataObject", que foi criada para facilitar o acesso aos remote objects. Minha classe "Authentication" possui um método "login" e o seus respectivos handlers de evento, sendo o principal "loginResultHandler", que é o callback em caso de sucesso. Bem, neste handler, como um resultado positivo foi obtido (o OID do usuário autenticado), eu preciso chamar a função "getUserById", da minha classe "User", que deveria me retornar uma nova instância de "User", com as propriedades do usuário informado. Todas as requisições estão sendo processadas com sucesso, o que está pegando mesmo, é o retorno da instância, que não sei por quê, me retorna null, mesmo a instância tendo sida criada sem problemas. Pelo que pude perceber, e pelo debug que fiz, uma das hipóteses seria que é porque o flex não espera o processamento da função para prosseguir, linearmente, o processamento da aplicação. Outra hipótese seria o fato de eu estar chamando uma função que dispara um evento que retorna um valor e eu supostamente não pego este valor em lugar nenhum. Mas bem, como sou um jovem padawan em flex, peço-lhes ajuda. =) Às classes, só com os métodos/propriedades que estão me tirando o sono: Authentication.as [code] package br.prodocms.security.control{ import br.ingens.dataobjects.DataObject; import br.prodocms.security.model.*; import br.prodocms.security.view.*; import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; public class Authentication extends DataObject{ public function Authentication(){ destination = "amfphp"; source = "br.prodocms.security.Authentication"; showBusyCursor = true; super(); } public function login( username:String, user_password:String, domain_url:String ):void{ remoteObject.login.send( username, user_password, domain_url ); resetAllEventHandlers(); } public function loginResultHandler( event:ResultEvent ):void{ SecurityModelLocator.getInstance().authenticatedUserId = event.result as int; var authenticatedUser:User = new User(); authenticatedUser = authenticatedUser.getUserById( event.result as int ); // é aqui que a sem vergonha da instância deveria ser pega var loginFrm:LoginFrm = SecurityModelLocator.getInstance().loginFrm; loginFrm.close(); } } } [/code] User.as [code] package br.prodocms.security.control{ import br.ingens.dataobjects.DataObject; import br.prodocms.security.model.*; import br.prodocms.security.view.*; import mx.rpc.events.ResultEvent; [RemoteClass(alias="User")] [Bindable] public class User extends DataObject { private var _id:Number = new Number(); private var _domain_id:Number = new Number(); private var _full_name:String = new String(); private var _email:String = new String(); private var _username:String = new String(); private var _user_password:String = new String(); private var _active:Boolean = new Boolean(); public function User(){ destination = "amfphp"; source = "br.prodocms.security.User"; showBusyCursor = true; super(); } // [Getters/Setters das propriedades] public function getUserById( id:Number ):void{ remoteObject.getUserById.send( id ); resetAllEventHandlers(); } public function getUserByIdResultHandler( event:ResultEvent ):User{ var result:User = event.result as User; // trace( result ); no trace aparece a minha instância criada return result; } } } [/code] Caso precisem de mais detalhes, basta me pedir. Agradeço qualquer ajuda que possam me dar. Um abraço! Diego Hordi. --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---