Nossa, mais uma vez obrigado Mario, não conhecia esse <mx:Binding> e é justamente o que quero, eu prefiro 5000000000 vezes usar mxml :D
abraços PS: Vou dar um CC para o flex-dev, abraços. 2009/10/13 Mário Júnior <[email protected]>: > o.O ??? > Eu "bindo" os meus componentes diretamente com os meus VOs no Flex... sem > problema algum :) > > Vamos assumir o exemplo: > > objeto "pessoa": > class Pessoa { > public var nome : String; > public var idade : int; > public var dataNascimento : Date <-- Tipo Date > > } > > > No meu formulario MXML: > <mx:TextInput id="tiNome" text="{pessoa.nome}" /> > <mx:TextInput id="tiIdade" text="{pessoa.idade}" /> > <mx:DateField id="dfData" selectedDate="{pessoa.dataNascimento}" /> (ATENÇAO > para as propriedades Date) > > > Ok... só com isso, qnd vc carregar uma objeto pessoa, os DADOS DO OBJETO vão > aparecer nos controles (objeto ==> controle), isso por causa do databinding > { }. Até aí já imagino q vc já tenha visto... blz! > > > Agora... se vc quer SETAR DADOS DO CONTROLE NO COMPONENTE (controle > ==>objeto), vc pode usar isso no seu MXML: > > <mx:Binding source="tiNome.text" destination="pessoa.nome" /> > <mx:Binding source="int(tiIdade.text)" destination="pessoa.idade" /> > (ATENÇAO para o cast no source) > <mx:Binding source="dfData.selectedDate" > destination="pessoa.dataNascimento" /> > > > Com isso.. toda mudança q vc faz nos controles, já irao refletir diretamente > no objeto! > Esse <mx:Binding/> te poupa ter q fazer isso no AS3: > > var p : Pessoa = new Pessoa(); > p.nome = tiNome.text; > p.idade = int(tiIdade.text); > p.dataNascimento = dfData.selectedDate; > > > Só mesmo quem não conhece <mx:Binding> ainda faz esse treco de cima :) > > > Se vc for um cara meio "xiita" (como alguns q tenho conhecido ultimamente) > e nao gosta de usar mxml (mal sabe o poder q perde), é possivel fazer a > mesma coisa com AS3 usando a classe BindingUtils. > > > Espero q tenha compreendido. > > > Abraços. > > > (Acho q só nós q estamos nessa lista ainda =D... nao sei se os alunos > continuam recebendo ela. Talvez seria interessante mover as duvidas para a > Flexdev.) > > > > > > > > > > > 2009/10/13 Frederico Lellis <[email protected]> >> >> Bom dia Mario, >> >> Primeiramente, obrigado pela ajuda. >> Acabei optando pela opção de setar na mão mesmo pelo lado do java >> antes de mandar para o banco, (sim, estou usando o Hibernate). Até fui >> pela opção numero 4 mas como não estou com muito tempo, acabei >> desistindo nesse primeiro momento de usar a reflection, assim como a >> opção numero 3. Assim que o sistema entrar em homologação eu >> implemento essa solução mais elegante. >> >> Ponto negativo Flex Vs JSF: >> >> Por trabalhar com JSF a algum tempo e esta com o Vicio de "bindar" os >> input direto nas entidades, ou VO´s, descobri agora nos 45 do segundo >> tempo que no flex nao se trabalha assim, lendo a documentação da adobe >> sobre data binding vi que eles setam na mao os valores vindos dos >> componentes nos VO´s. >> >> A unica maneira que consegui setar direto nos VO´s foi usando >> valueChange, mas com certeza não é a melhor forma e nem a que >> utilizei. Acabei tendo de fazer mais um monte de linha de codigo para >> fazer os updateModel de cada tela. >> >> Mais um vez obrigado pela ajuda. >> >> abraços. >> >> >> 2009/10/10 Mário Júnior <[email protected]>: >> > Ola Frederico.... cara.. ja tive muito essas encheçoes de saco do >> > BlazeDS... >> > vc tem 4 formas de resolver isso: >> > >> > 1) No setter do seu id, vc pode verificar se o valor passado no >> > argumento >> > for 0 (zero), entao sete-o para null. >> > >> > 2) Caso vc nao queira "poluir" suas entidades com essa validacao chata, >> > vc >> > poderá validar isso nas suas classes de servicos. >> > Qnd vc receber uma entidade com id == 0, entao sete-a para null. É a >> > mesma >> > coisa da solução anterior, só mudamos de lugar nao mais no setter da >> > entidade, mas agora fazer na classe de servico antes de passar o seu >> > objeto >> > para seu dao ( receio q esteja usando algum ORM - i.e hibernate). >> > >> > >> > Essas duas solções funcionam, mas podem ser um pouco "chatas" uma vez q >> > se >> > terá SEMPRE q fazer o "if (entidade.getId == 0)" ... >> > Entao se o programador esquecer de fazer isso em algum momento, já era! >> > Além >> > de tornar a pratica repetitiva, está sujeita a falhas. >> > >> > Agora... vou falar as outras duas formas.... prepare-se para imergir no >> > mundo BlazeDS (yes! Imersão BlazeDS.. hehe) >> > >> > >> > Seguinte.. 98% dos usuarios java/flex que usam BlazeDS mal conhecem sua >> > estrutura, por isso se perdem com essas coisas. >> > Oq vou dizer aqui vi pouca gente usar, lá vai. >> > >> > >> > 3) Criar seu fork do BlazeDS: >> > Baixe o source do BlazeDS, abra a classe Amf3Input.java e sobrescreva o >> > metodo read(), inserindo o seguine trecho de codigo: >> > >> > @Override >> > public Object readObject() throws ClassNotFoundException, IOException { >> > Object value = super.readObject(); >> > if (value instanceOf Double && ((Double).value).isNaN()){ >> > value = null; >> > } >> > >> > return value; >> > >> > } >> > >> > >> > Muita atenção para esse trecho: ((Double).value).isNaN()) >> > Isso significa que se o Flex me mandar um NaN (Nota a Number) vou >> > converte-lo para null, e nao para 0 (zero) como é o procedimento normal. >> > É aí q está o segredo da serialização de numeros (long / int) entre Fx >> > <=> >> > Java! >> > >> > Alterada a classe, compile o BlazeDS e utilize sua versao propria. >> > >> > >> > >> > 4) (A forma que EU uso) >> > O BlazeDS é flexível a ponto de eu criar meu proprio Adapter (classe >> > responsavel por invocar as suas classes de serviço no Java). >> > Entao, oq eu faço é extender a classe JavaAdapter e sobreescrever o >> > método >> > invoke() >> > Nesse ponto vc tem acesso aos parametros (de entrada e saída) de >> > serialização. >> > Com isso em maos, vc pode usar Reflexao para validar/alterar os valores >> > q >> > chegam do Flex (e os q vao tb). >> > >> > Assim fica mais generico, e bem mais reaproveitavel. >> > >> > >> > Espero ter ajudado. >> > >> > Abraços. >> > >> > >> > >> > >> > >> > >> > 2009/10/10 Frederico Lellis <[email protected]> >> >> >> >> Voltando, consegui gerar os VO´s com sucesso e ate persistir no banco, >> >> porem estou enfrentando um problema que talvez alguem possa me ajudar. >> >> >> >> Eu passo algumas entidades, com o pk_id:Number null porem ao converter >> >> para o Java ele transforma isso em 0, o que é o correto, porem eu >> >> preciso que chegue com null para ao persistir o banco criar um novo >> >> registro na tabela em questao e nao ir procurar por um registro ja >> >> existente com pk_id = 0. >> >> >> >> Teria como ao converter no blazeds eu indicar que se um number é igual >> >> a 0 tranformar em null? Porque estou tendo que fazer isso incode mas é >> >> inviável pois tenho mais 90 entidades para checar isso. >> >> >> >> valeu. >> >> >> >> abraços. >> >> >> >> >> >> >> >> >> >> 2009/9/25 Frederico Lellis <[email protected]>: >> >> > Concordo com voce sobre a mudança da arquitetura no meio do projeto >> >> > mas, >> >> > como esse é meu primeiro grande projeto Flex + Java acabo que nao >> >> > conheço o >> >> > bastante ainda pra definir de inicio a arquitetura de todo o sistema. >> >> > Ele ta >> >> > sendo meio que a minha cobaia, o problema é que o cliente nao quer >> >> > saber >> >> > disso ne? Heehehehehehe >> >> > >> >> > abraços. >> >> > >> >> > >> >> > 2009/9/25 Frederico Lellis <[email protected]> >> >> >> >> >> >> Basicamente mudei mesmo so por causa do GAS, porque como disse tenho >> >> >> muitos VO´s e so encontrei o GAS do granite pra fazer isso pra mim. >> >> >> O >> >> >> problema do Lazy ainda nem cheguei la. >> >> >> Vou testar essa nova arquitetura com o BlazeDS e o FCG e retorno com >> >> >> o >> >> >> resultado. >> >> >> >> >> >> Valeu Mario. >> >> >> >> >> >> abraços. >> >> >> >> >> >> 2009/9/25 Mário Júnior <[email protected]> >> >> >>> >> >> >>> Acho meio punk a decisao de trocar um middleware da sua arquitetura >> >> >>> só >> >> >>> por causa da geracao de codigo. >> >> >>> Se a questao é só a geraçao dos vos em as3, use esse cara aqui: >> >> >>> http://www.dehats.com/drupal/?q=node/7 >> >> >>> >> >> >>> Funciona perfeitamente, mas como disse no começo, acho q sua >> >> >>> escolha >> >> >>> deve >> >> >>> ter sido baseado em alguma outra coisa... pq optou usar o Granite? >> >> >>> Veja bem, >> >> >>> nao sou contra o granite, até gosto dele, mas ele é um pouco mais >> >> >>> lento q o >> >> >>> BlazeDS e as vezes (em casos especificos) ele é muito intrusivo na >> >> >>> arquitetura. (Por exemplo, seus entities terem q ser Externalizable >> >> >>> só >> >> >>> para >> >> >>> contornar o lazy-loading do hibernate). >> >> >>> >> >> >>> Só usei o granite uma vez, qnd realmente precisei criar um projeto >> >> >>> do >> >> >>> zero com ele. >> >> >>> >> >> >>> Abraços. >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> 2009/9/25 Frederico Lellis <[email protected]> >> >> >>>> >> >> >>>> O grande problema Mario é que eu preciso usar o GAS do GraniteDS >> >> >>>> porque >> >> >>>> tenho cerca de uns 150 VO. Por isso passei a usar o graniteds. >> >> >>>> >> >> >>>> abraços >> >> >>>> >> >> >>>> >> >> >>>> 2009/9/25 Mário Júnior <[email protected]> >> >> >>>>> >> >> >>>>> Entao, pq nao invocar o EJB com o BlazeDS direto da sua camada de >> >> >>>>> servicos/facade usando context? >> >> >>>>> Da uma olhada na documentaçao do BlazeDS q tem um exemplo bem >> >> >>>>> simples. >> >> >>>>> >> >> >>>>> >> >> >>>>> >> >> >>>>> 2009/9/25 Frederico Lellis <[email protected]> >> >> >>>>>> >> >> >>>>>> Boa dia a todos da lista, >> >> >>>>>> >> >> >>>>>> Estou com um projeto que estava utilizando o BlazeDS para fazer >> >> >>>>>> a >> >> >>>>>> comunicação entre flex e java. E estava acessando o projeto WAR >> >> >>>>>> e >> >> >>>>>> nao o EJB. >> >> >>>>>> Tive que mudar para GraniteDS e chamar o EJB direto so que agora >> >> >>>>>> nao consigo >> >> >>>>>> por nada fazer funcionar. Tirei SS das minhas configurações e >> >> >>>>>> estrutura do >> >> >>>>>> projeto se alguem puder me dar uma ajuda ficarei muito grato. >> >> >>>>>> >> >> >>>>>> abraços. >> >> >>>>>> >> >> >>>>>> -- >> >> >>>>>> -- >> >> >>>>>> ****************************************************** >> >> >>>>>> >> >> >>>>>> Frederico Lellis de Albuquerque >> >> >>>>>> Analista Desenvolvedor Java/Flex Pleno. >> >> >>>>>> Graduado Em Ciência da Computação >> >> >>>>>> [email protected] >> >> >>>>>> >> >> >>>>>> ****************************************************** >> >> >>>>>> >> >> >>>>>> >> >> >>>>> >> >> >>>>> >> >> >>>>> >> >> >>>>> -- >> >> >>>>> Mario Junior >> >> >>>>> Enterprise Java / Flex Architectures >> >> >>>>> Adobe Certified Expert Flex 3 with AIR >> >> >>>>> >> >> >>>>> Sofshore Informática >> >> >>>>> http://www.sofshore.com.br >> >> >>>>> +55 (48) 3337 2003 >> >> >>>>> Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 >> >> >>>>> Itacorubi >> >> >>>>> Florianopolis SC Brasil >> >> >>>>> >> >> >>>>> >> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> -- >> >> >>>> -- >> >> >>>> ****************************************************** >> >> >>>> >> >> >>>> Frederico Lellis de Albuquerque >> >> >>>> Analista Desenvolvedor Java/Flex Pleno. >> >> >>>> Graduado Em Ciência da Computação >> >> >>>> [email protected] >> >> >>>> >> >> >>>> ****************************************************** >> >> >>>> >> >> >>>> >> >> >>> >> >> >>> >> >> >>> >> >> >>> -- >> >> >>> Mario Junior >> >> >>> Enterprise Java / Flex Architectures >> >> >>> Adobe Certified Expert Flex 3 with AIR >> >> >>> >> >> >>> Sofshore Informática >> >> >>> http://www.sofshore.com.br >> >> >>> +55 (48) 3337 2003 >> >> >>> Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 >> >> >>> Itacorubi >> >> >>> Florianopolis SC Brasil >> >> >>> >> >> >>> >>> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> -- >> >> >> ****************************************************** >> >> >> >> >> >> Frederico Lellis de Albuquerque >> >> >> Analista Desenvolvedor Java/Flex Pleno. >> >> >> Graduado Em Ciência da Computação >> >> >> [email protected] >> >> >> >> >> >> ****************************************************** >> >> > >> >> > >> >> > >> >> > -- >> >> > -- >> >> > ****************************************************** >> >> > >> >> > Frederico Lellis de Albuquerque >> >> > Analista Desenvolvedor Java/Flex Pleno. >> >> > Graduado Em Ciência da Computação >> >> > [email protected] >> >> > >> >> > ****************************************************** >> >> > >> >> >> >> >> >> >> >> -- >> >> -- >> >> ****************************************************** >> >> >> >> Frederico Lellis de Albuquerque >> >> Analista Desenvolvedor Java/Flex Pleno. >> >> Graduado Em Ciência da Computação >> >> [email protected] >> >> >> >> ****************************************************** >> >> >> >> >> > >> > >> > >> > -- >> > Mario Junior >> > Enterprise Java / Flex Architectures >> > Adobe Certified Expert Flex 3 with AIR >> > >> > Sofshore Informática >> > http://www.sofshore.com.br >> > +55 (48) 3337 2003 >> > Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 >> > Itacorubi >> > Florianopolis SC Brasil >> > >> > > >> > >> >> >> >> -- >> -- >> ****************************************************** >> >> Frederico Lellis de Albuquerque >> Analista Desenvolvedor Java/Flex Pleno. >> Graduado Em Ciência da Computação >> [email protected] >> >> ****************************************************** >> >> > > > > -- > Mario Junior > Enterprise Java / Flex Architectures > Adobe Certified Expert Flex 3 with AIR > > Sofshore Informática > http://www.sofshore.com.br > +55 (48) 3337 2003 > Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100 Itacorubi > Florianopolis SC Brasil > > > > -- -- ****************************************************** Frederico Lellis de Albuquerque Analista Desenvolvedor Java/Flex Pleno. Graduado Em Ciência da Computação [email protected] ****************************************************** --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
