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

Responder a