Bem, vamos arriscar um palpite...
Já que não queres (podes) mudar (muito) a tua arquitetura...

Em primeiro lugar, a linha abaixo, como bem notaste, é a fonte do problema

                        var authenticatedUser:User = new User();
authenticatedUser = authenticatedUser.getUserById( event.result as int ); // é 
aqui que a sem vergonha da instância deveria ser pega

Porque o método chama o remoteObject do pai (imagino), e só da o resultado 
quando chama o seu resultHandler

Acho que podias tentar uma abordagem de composição nessa classe, para que, 
quando o result fosse executado (e os valores do TO atribuídos) ela disparasse 
um evento
Veja mais em:
http://www.gskinner.com/blog/archives/2007/07/building_a_stat_1.html (eu acho 
mais legível)
http://www.darronschall.com/weblog/archives/000100.cfm

De qualquer forma, parece que precisas mesmo de eventos aí...
 
Gabriela Trindade Perry - http://www.gabriela.trindade.nom.br



> Date: Mon, 8 Sep 2008 18:47:34 -0700
> Subject: [flexdev] Dúvida manipulação de eventos com retorno de valores
> From: [EMAIL PROTECTED]
> To: [email protected]
> 
> 
> 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.
> 
> > 

_________________________________________________________________
News, entertainment and everything you care about at Live.com. Get it now!
http://www.live.com/getstarted.aspx
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Responder a