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