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