Essa sua solução é meio gambiarra vei... isso por que minha coluna no banco
pode aceitar um zero, como no exemplo velocidade de um veiculo...

Acho muito melhor vc deixar (nesses casos) o tipo no flex como object pq? pq
caso vc esteja usando Integer no Java o resultado pode ir nulo.

2009/10/21 Frederico Lellis <[email protected]>

>
> Bom dia Eduardo,
>
> Vou colar uma resposta dada pelo Mario que tive sobre o mesmo assunto.
>
>
> "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."
>
>
> Eu implementei do lado do java os checks, mas no seu caso voce tera
> que implementar a solução número 4 ou 3.
>
> espero ter ajudado.
>
> obs: caso voce venha a fazer a solução numero 4, disponibiliza a
> classe aqui para o grupo?
>
> abraços.
>
>
>
> 2009/10/21 Eduardo Rodrigues <[email protected]>:
> >
> > Bom dia pessoal,
> >
> > Andei lendo e testando e o quando tenho um objeto Number nulo no lado
> > do flex o comportamento é que ele é serializado para o valor default
> > no java.
> > Digamos que eu mapeie um Integer no java e um Number no flex, quando o
> > number está nulo ele vai 0 pro java, mesmo sendo Integer um wrappper
> > que poderia ser perfeitamente serializado para null.
> > Em aplicações que o valor 0 é um valor significativo e nulo é a
> > ausência de valor este comportamento não é desejado.
> > Ex:
> > Lançamento de notas de provas escolares.
> > O aluno quer saber quando sua nota não foi lançada (nulo) ou se ele tirou
> 0.
> >
> > Como vocês costumam tratar este tipo de caso? Eu realmente não quero
> > criar um boolean do tipo "valor lançado" pois isto é muito
> > anti-natural no meu ponto de vista.
> >
> > Estou usando BlazeDA + java 5+
> >
> > Obrigado!
> >
> > >
> >
>
>
>
> --
> --
> ******************************************************
>
> Frederico Lellis de Albuquerque
> Analista Desenvolvedor Java/Flex Pleno.
> Graduado Em Ciência da Computação
> [email protected]
>
> ******************************************************
>
> >
>


-- 
Horus Augustus C. C. Lima

Sagarana Tech
Mobile +55(85)8842.4402
Desk +55(85)3304.6530
[email protected]
http://www.sagaranatech.com

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