Muito obrigado, Gabriela!

Vou tentar implementar algo e se conseguir achar uma solução,
compartilho com o grupo. Senão, volto à perturbá-los. =)

Um abraço!
Diego Hordi


On 9 set, 15:02, gabriela perry <[EMAIL PROTECTED]> wrote:
> 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: flexdev@googlegroups.com
>
> > 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 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
-~----------~----~----~----~------~----~------~--~---

Responder a