Fala galera!
Estou com um problema meio chato,como sempre com o tal do BlazeDs e seus ASobject.entao vamos lah:
Tenho uma classe (TabelaDados),a qual tem um atributo que é um arrayList de objetos de outra classe(listDependencias),passo para o Flex4 um arrayList desta classe (TabelaDados), e depois passo para o Java novamente esse arraylist.Tenho as Classes TabelaDados e Dependencia mapeadas perfeitamente em AS,porem quando preciso pegar o atributo listDependencias da Classe TabelaDados eles estao do tipo ASObject e nao consigo manipular esses dados percorrendo-os por um for!
Ja tentei fazer um metodo que faz os Casting de ASObject para Objeto e depois tento fazer o casting para Dependencia
return new ASTranslator().createInstance(objetoAS, Object.class);
mas tambem nao deu certo
Raiz do Problema:
Acredito eu (Nao Sei…) que o problema acontece porque as ArrayCollection do AS3 nao sao tipados entao quando eu devolvo esse arraylist para o java os objetos nele vao tipados como ASobject.
Alguem ja passou por essa situação?Alguma ideia,soluçao…
No meu funciona perfeitamente passando as List do Flex para o Java ou vice-versa, tente debugar seu código e também coloque suas classes ai, para analisarmos melhor, flw!
[RemoteClass(alias="com.mv.model.TabelaDados")]
[Bindable]
public class TabelaDados
{
public var nome:String;
public var listColunas:ArrayCollection;
public var listConstraints:ArrayCollection;
public var listDependencias:ArrayCollection;
public var selected:Boolean = false;
public var listDados:ArrayCollection;
public function TabelaDados()
{
}
}
Classe TabelaDados em Java
public class TabelaDados implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String nome;
private List<ColunaDados> listColunas;
private ArrayList<ConstraintDados> listConstraints;
private ArrayList<Dependencia> listDependencias;
private ArrayList<Dado> listDados;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public List<ColunaDados> getListColunas() {
return listColunas;
}
public void setListColunas(List<ColunaDados> listColunas) {
this.listColunas = listColunas;
}
public ArrayList<ConstraintDados> getListConstraints() {
return listConstraints;
}
public void setListConstraints(ArrayList<ConstraintDados> listConstraints) {
this.listConstraints = listConstraints;
}
public ArrayList<Dependencia> getListDependencias() {
return listDependencias;
}
public void setListDependencias(ArrayList<Dependencia> listDependencias) {
this.listDependencias = listDependencias;
}
@Override
public String toString() {
return this.getNome()+"\n";
}
public ArrayList<Dado> getListDados() {
return listDados;
}
public void setListDados(ArrayList<Dado> listDados) {
this.listDados = listDados;
}
Classe Dependencia em AS
[RemoteClass(alias="com.mv.model.Dependencia")]
[Bindable]
public class Dependencia
{
public var tipo:String;
public var nomeTabela:String;
public var nomeColuna:String;
public var nomePrimaryKey:String;
public function Dependencia()
{
}
}
Classe Dependencia em Java
public class Dependencia implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String tipo;
private String nomeTabela;
private String nomeColuna;
private String nomePrimaryKey;
public String getTipo() {
return tipo;
}
public void setTipo(String tipo) {
this.tipo = tipo;
}
public String getNomeTabela() {
return nomeTabela;
}
public void setNomeTabela(String nomeTabela) {
this.nomeTabela = nomeTabela;
}
public String getNomeColuna() {
return nomeColuna;
}
public void setNomeColuna(String nomeColuna) {
this.nomeColuna = nomeColuna;
}
public String getNomePrimaryKey() {
return nomePrimaryKey;
}
public void setNomePrimaryKey(String nomePrimaryKey) {
this.nomePrimaryKey = nomePrimaryKey;
}
Sao essas classes…aparentemente ta td ok a nao se q tenha mais alguma coisa para o mapeamento
Ja debuguei varias vezes o que acontece eh q no metodo java que recebe esse list de TabelaDados,o list de Dependencia vem com objetos do tipo ASObject
dai nao consigo fazer o listTabelaDados.getListDependencias() pra percorrer com um for…
Em AS não tem como tipas as ArrayCollections que nem as List em java então para percorrer uma lista você tem que fazer a conversão mais ou menos assim
for(var x:int=0; x<minhaArrayCollection.length;x++){
MinhaClasseAS minhaClasse = MinhaClasseAS(listaJogos.getItemAt(x)); //aqui você converte item por item da sua lista
//mais códigos...
}
se você configurou tudo certo e estiver vinculando sua List do java ao ArrayCollection do Flex isso deve dar certo.
Conferi ai e avisa!
RangeError: Index ‘3’ specified is out of bounds.
at mx.collections::ListCollectionView/getItemAt()[E:\dev\4.x\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:502]
Deu certo…isso ai soh dei umas mexidas ali nos getItem e deu certo!!!
vlw…esses collection do AS3 sao mt pobre em recursos,alem do blazeDS tbm sao fraco
[quote=vvp0]Deu certo…isso ai soh dei umas mexidas ali nos getItem e deu certo!!!
vlw…esses collection do AS3 sao mt pobre em recursos,alem do blazeDS tbm sao fraco
Isso acontece, pq mesmo com o RemoteClass correto e o import é necessário q seja criada uma instância na app para o compilador levar os dados dessa classe.
No java é o mesmo, vc pode colocar pacote.*, mas só as classes usadas realmente irão ser compiladas.