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 -~----------~----~----~----~------~----~------~--~---