Leonardo... lembra q eu disse q o BlazeDS usa reflection para serializar os
objetos?

Ou seja... qnd ele faz a *conversão* *de objetos Java <=> AS3*, o BlazeDS
irá invocar os Getters/Setters dos seu objetos para recuperar/escrever os
valores... por isso q se nao tem setter, ele nao escreve/serializa a
informação.

Se vc quer realmente "esconder" o Id, entao terá q usar os famosos (VO / DTO
/ BO, seja lá por qual nome conhecer... hehe)


Abraços.





2009/9/12 Leonardo Ribeiro <[email protected]>

> Rodrigo,
>
> Cara, na classe DomainEntity, que so tinha o "getId()" eu coloquei o
> "setId(Long id)" e funcionou  ;-)
> Mas isso meio que "feriu" o meu modelo pq o "id" nao deveria poder ser
> "setado" ele é criado pela classe e nao pode/deve mais ser alterado.
> Mas o problema foi resolvido. Agora vou pensar em como resolver o modelo.
>
> Abaixo segue o codigo JAVA que carrega os "Cursos"
>
>     public List<Curso> getCursos(boolean loadDisciplinas) {
>         return executeNamedQuery("Curso.load", null, null);
>     }
>
>
>
> 2009/9/11 Leonardo Ribeiro <[email protected]>
>
> Blz, quando estiver em casa eu te mando sim.
>> Uma coisa que observei agora é que na classe DomainEntity o atributo "id"
>> é protected e so tem o "get" e NAO tem o "set".
>>
>> Mas te mando sim o codigo completo de carga da classe java depois.
>>
>> Valeu
>>
>> 2009/9/11 Rodrigo M. Rodrigues <[email protected]>
>>
>>
>>> Complicado heim.
>>> coloca aí pra gente o momento que vc popula a Classe DomainEntity no
>>> Java e o Result do Serviço no Flex.
>>> Acredito ser algum detalhe que esteja passando despercebido.
>>>
>>>
>>>
>>> On 10 set, 18:30, Leonardo Ribeiro <[email protected]> wrote:
>>> > Rodrigo,
>>> >
>>> > Estou inicializando agora depois de ler seu e-mail, mas no caso agora
>>> > carrega com valor 0 (zero) e nao o que esta na base.
>>> > Rapaz, nao sei no que estou errando e nao to conseguindo de forma
>>> alguma
>>> > corrigir isso para seguir com o desenvolvimento.
>>> >
>>> > Segue abaixo a estrutura de classes que tenho
>>> >
>>> > Classes Java
>>> >
>>> > ps: interface IDomainEntity so implementa Serializable (nao tem codigo
>>> > algum)
>>> >
>>> > @Entity
>>> > @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
>>> > public abstract class DomainEntity implements IDomainEntity {
>>> >
>>> >     private static final long serialVersionUID = 1L;
>>> >
>>> >     @Id
>>> >     @Column(name = "id")
>>> >     protected Long id;
>>> >
>>> >     @Transient
>>> >     private boolean completo = true;
>>> >
>>> >     public DomainEntity() {
>>> >         this.id = DomainEntityIdFactory.makeObjectId();
>>> >     }
>>> >
>>> >     public Long getId() {
>>> >         return id;
>>> >     }
>>> >
>>> >     public boolean isCompleto() {
>>> >         return completo;
>>> >     }
>>> >
>>> >     public void setCompleto(boolean completo) {
>>> >         this.completo = completo;
>>> >     }
>>> >
>>> > }
>>> >
>>> > public class Curso extends DomainEntity {
>>> >
>>> >     private static final long serialVersionUID = 1L;
>>> >
>>> >     @Column(name = "codigo", nullable = false, unique = true)
>>> >     private String codigo;
>>> >
>>> >     @Column(name = "nome", nullable = false, length = 50, unique =
>>> true)
>>> >     private String nome;
>>> >
>>> >     @Transient
>>> >     private List<CursoDisciplina> disciplinas = new
>>> > ArrayList<CursoDisciplina>();
>>> >
>>> >     public Curso() {}
>>> >
>>> >     public String getCodigo() {
>>> >         return codigo;
>>> >     }
>>> >
>>> >     public void setCodigo(String codigo) {
>>> >         this.codigo = codigo;
>>> >     }
>>> >
>>> >     public String getNome() {
>>> >         return nome;
>>> >     }
>>> >
>>> >     public void setNome(String nome) {
>>> >         this.nome = nome;
>>> >     }
>>> >
>>> >     public void setDisciplinas(final List<CursoDisciplina> disciplinas)
>>> {
>>> >         this.disciplinas = disciplinas;
>>> >     }
>>> >
>>> >     public CursoDisciplina getDisciplina(final int idx) {
>>> >         if (idx < 0 || disciplinas.isEmpty() || idx >
>>> disciplinas.size() -
>>> > 1) return null;
>>> >         return disciplinas.get(idx);
>>> >     }
>>> >
>>> > }
>>> >
>>> > Classes AS
>>> >
>>> >
>>> [RemoteClass(alias="fae.engsoft.diario.model.entities.DomainEntity")]
>>> >
>>> >     [Bindable]
>>> >     public class DomainEntity
>>> >     {
>>> >         public var id:Number = new Number;
>>> >         public var completo:Boolean = true;
>>> >
>>> >         public function DomainEntity(){}
>>> >     }
>>> >
>>> >     [RemoteClass(alias="fae.engsoft.diario.model.entities.Curso")]
>>> >     [Bindable]
>>> >     public class Curso extends DomainEntity
>>> >     {
>>> >         public var codigo:String = new String;
>>> >         public var nome:String = new String;
>>> >         public var disciplinas:ArrayCollection = new ArrayCollection;
>>> >
>>> >         public function Curso(){
>>> >             super();
>>> >         }
>>> >     }
>>> >
>>> > No As que contem os metodos da tela de listagem (que tem um DataGrid)
>>> >
>>> > [Bindable]
>>> > private var listCursos:ArrayCollection;
>>> >
>>> > public function onResultGetCursos(event:ResultEvent):void    {
>>> >     listCursos = event.result as ArrayCollection;
>>> >     var i:int;
>>> >     for (i = 0; i < listCursos.length; i++) {
>>> >         Alert.show("ID = " + (listCursos.getItemAt(i) as Curso).id);
>>> //Aqui
>>> > eu vejo que os "id" estao zerados (0)
>>> >     }
>>> >
>>> > }
>>> >
>>> > Para gravacao esta tudo OK. Os id's como pode ser visto no contrutor de
>>> > DomainEntity é criado pela aplicacao
>>> > é um Long, na gravacao ocorre a criacao e comita ok agora no select do
>>> > servidor (java) carrega OK mas no cliente
>>> > (As) chega sem esse valor. ( se eu nao inicializo, como estava antes
>>> vem
>>> > NaN, se inicializo como vc disse vem 0 (zero))
>>> >
>>> > Qualquer ajuda é muito bem vinda.
>>> >
>>> > 2009/9/10 Rodrigo M. Rodrigues <[email protected]>
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > > "The default value of a variable typed as Number is NaN (Not a
>>> > > Number)."
>>> >
>>> > >
>>> http://livedocs.adobe.com/flex/3/langref/index.html?Number.html&class...
>>> >
>>> > > On 10 set, 08:29, "Rodrigo M. Rodrigues" <[email protected]>
>>> wrote:
>>> > > > Sempre inicie os tipos Number no AS.
>>> > > > private var _num_conta_corrente:Number=0;
>>> > > > ||
>>> > > > private var _num_conta_corrente:Number=New Number();
>>> >
>>> > > > On 9 set, 17:28, Leonardo Ribeiro <[email protected]> wrote:
>>> >
>>> > > > > Os gettres e setters estao corretos e "public". (nas classes
>>> java). Na
>>> > > > > Classe AS nao tenho os getters e setters
>>> >
>>> > > > > 2009/9/9 Mário Júnior <[email protected]>
>>> >
>>> > > > > > o getter está certinho? Esse é outro erro comum:
>>> >
>>> > > > > > puglic Long getCodigo()  <-- CERTO.
>>> >
>>> > > > > > public Long ge*tc*odigo()  <--* Errado. *
>>> >
>>> > > > > > Não está "errado" sintaticamente, pq para o Java esse método
>>> pode
>>> > > existir
>>> > > > > > mas não é um "getter" propriamente válido. O BlazeDS utiliza
>>> reflexao
>>> > > para
>>> > > > > > acessar os atributos portanto é essencial q esteja escrito da
>>> maneira
>>> > > certa
>>> > > > > > "getCodigo" com "C" maiusculo.
>>> >
>>> > > > > > Outra coisa é ficar atento a visibilidade do getter, tem q ser
>>> > > public.
>>> >
>>> > > > > > (uma vez eu mandava o eclipse gerar meus getters/setters e nao
>>> > > prestava
>>> > > > > > atenção q estavam sendo gerados como protected, e perdi um
>>> tempão
>>> > > para
>>> > > > > > prestar atenção nisso... bellow! hahahah)
>>> >
>>> > > > > > abraços.
>>> >
>>> > > > > > 2009/9/9 Leonardo Ribeiro <[email protected]>
>>> >
>>> > > > > >> Sim estao identicos, a diferenca é o tipo de dado que na
>>> classe java
>>> > > é
>>> > > > > >> Long e na AS é Number
>>> > > > > >> Classe Java
>>> >
>>> > > > > >> @Entity
>>> > > > > >> @Table(name="xyz")
>>> > > > > >> @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
>>> > > > > >> public class Xyz implements Serializable {
>>> >
>>> > > > > >>    private static final long serialVersionUID = 1L;
>>> >
>>> > > > > >>    @Id
>>> > > > > >>    @Column(name = "codigo", nullable = false, unique = true)
>>> > > > > >>    private Long codigo;
>>> >
>>> > > > > >>    @Column(name = "nome", nullable = false, length = 50,
>>> unique =
>>> > > true)
>>> > > > > >>    private String nome;
>>> >
>>> > > > > >> Classe AS
>>> >
>>> > > > > >> [RemoteClass(alias="caminho.package.entities.Xyz")]
>>> > > > > >>    [Bindable]
>>> > > > > >>    public class Xyz
>>> > > > > >>    {
>>> > > > > >>       public var codigo:Number;
>>> > > > > >>       public var nome:String;
>>> >
>>> > > > > >>       public function Xyz()
>>> >
>>> > > > > >>    }
>>> >
>>> > > > > >> Qualquer ajuda é bem vinda.. nao consigo resolver isso e o
>>> > > desenvolvimento
>>> > > > > >> parou.
>>> >
>>> > > > > >> Att
>>> >
>>> > > > > >> 2009/9/9 Diego Martinez Salvanha <[email protected]>
>>> >
>>> > > > > >>> verifique se os Atributos da Classe Java estão idênticos na
>>> Classe
>>> > > AS!
>>> >
>>> > > > > >>> parece bobo.. mas é um erro comum...
>>> >
>>> > > > > >>> espero ter ajudado !
>>> >
>>> > > > > >>> 2009/9/9 Leonardo Ribeiro <[email protected]>:
>>> > > > > >>> > Pessoal,
>>> >
>>> > > > > >>> > Tenho uma aplicacao simples com Java+Hibernate+Flex+Spring.
>>> >
>>> > > > > >>> > Tenho uma classe simples em java com "codigo" e "nome"
>>> sendo
>>> > > codigo o
>>> > > > > >>> @Id,
>>> > > > > >>> > gravacao ocorre perfeitamente mas quando eu faço um select
>>> eu
>>> > > vejo que
>>> > > > > >>> a
>>> > > > > >>> > classe java foi carregada perfeitamente com "codigo" e
>>> "nome"
>>> > > porem na
>>> > > > > >>> minha
>>> > > > > >>> > classe correspondente em actionScrip que esta "Bindable"
>>> com a
>>> > > classe
>>> > > > > >>> java
>>> > > > > >>> > so carrega "nome" e o "codigo" fica NaN.
>>> >
>>> > > > > >>> > Uso o BlazeDS
>>> >
>>> > > > > >>> > Alguem sabe o motivo de ocorrer isso?
>>> >
>>> > > > > >>> > --
>>> > > > > >>> > []'s
>>> > > > > >>> > Leonardo
>>> >
>>> > > > > >>> > Linux User #488650
>>> > > > > >>> > Ubuntu User #27045
>>> > > > > >>> > Mais sobre o Ubuntu em português:
>>> http://www.ubuntu-br.org/comece
>>> >
>>> > > > > >>> --
>>> >
>>> > > --------------------------------------------------------------------
>>> > > > > >>> Diego M Salvanha
>>> >
>>> > > > > >>> msn : [email protected]
>>> > > > > >>> 18 8801 4874
>>> >
>>> > > > > >>> P Antes de imprimir, pense no AQUECIMENTO GLOBAL.
>>> >
>>> > > > > >> --
>>> > > > > >> []'s
>>> > > > > >> Leonardo
>>> >
>>> > > > > >> Linux User #488650
>>> > > > > >> Ubuntu User #27045
>>> > > > > >> Mais sobre o Ubuntu em português:
>>> http://www.ubuntu-br.org/comece
>>> >
>>> > > > > > --
>>> > > > > > 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
>>> >
>>> > > > > --
>>> > > > > []'s
>>> > > > > Leonardo
>>> >
>>> > > > > Linux User #488650
>>> > > > > Ubuntu User #27045
>>> > > > > Mais sobre o Ubuntu em português:http://www.ubuntu-br.org/comece
>>> >
>>> > --
>>> > []'s
>>> > Leonardo
>>> >
>>> > Linux User #488650
>>> > Ubuntu User #27045
>>> > Mais sobre o Ubuntu em português:http://www.ubuntu-br.org/comece
>>>
>>>
>>
>>
>> --
>> []'s
>> Leonardo
>>
>> Linux User #488650
>> Ubuntu User #27045
>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>>
>
>
>
> --
> []'s
> Leonardo
>
> Linux User #488650
> Ubuntu User #27045
> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
>
> >
>


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

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