Olá renzonuccitelli!
Obrigado pela resposta. Na realidade eu já utilizo o remoteobject com BlazeDS, mas por causa do lazy loading,
tentei uma alternativa restfull com o xml.
Eu consegui fazer a leitura, contudo, ao meu ver não é a forma ideal, pois é muito trabalhosa. Bem vou deixar o que fiz, talvez ajude alguém com o problema
parecido, mas volto a dizer que achei esta é uma solução ruim, mas resolveu:
coleção para armazenar a lista de telefones( ou a lista do tipo da sua classe)
[Bindable]
private var fones : ArrayCollection;
minha classe no flex, uma representação da classe no java
[RemoteClass(alias="br.com.sistema.model.Fone") ]
[Bindable]
public class Fone
{
public var id_Fone:Number;
public var nomePessoa:String;
public var login:String;
public var dDD:Number;
public var fone1:String;
public var dDD2:Number;
public var fone2:String;
public var dDD3:Number;
public var fone3:String;
public var observacao:String;
public var ramal:Number;
public var ramal2:Number;
public var departamento:Departamento;
public var nomeDepartamento:String;
public var nomeConjuge:String;
public var voip:String;
public var diaAniversario:Number;
public var mesAniversario:Number;
public var usuario:Adm_Usuario;
public var dataCadastro:Date;
public function getFone(ddd : String, fone : String ):String
{
var phoneFormatter : PhoneFormatter = new PhoneFormatter();
phoneFormatter.formatString = "(##) ####-####";
var foneFormatado : String = Funcoes.nullToString( fone ).replace("-","" );
if (foneFormatado.length == 8)
{
foneFormatado = phoneFormatter.format( ddd + foneFormatado );
}
else
{
ddd + "-" + Funcoes.nullToString( fone );
}
return foneFormatado
//return "(" + ddd + ") -" + Funcoes.nullToString( fone );
}
public function getRamalEDepartamento():String
{
var depto : String = "";
var sRamal : String = "";
if ( departamento != null )
{
depto = departamento.nome + " - "
}
if ( ramal != 0 )
{
sRamal = ramal.toString();
}
return depto + sRamal;
}
public function Fone()
{
}
}
chamando a servlet pelo HTTPService, como um object e não o xml.
O HTTPSercvice converte automaticamente para object, na estrutura parecida com o xml
<mx:HTTPService
id="telefoneServlet"
showBusyCursor="true"
url="http://localhost:8080/sistema/getfones"
resultFormat="object"
concurrency="last"
result="getFonesXmlResult(event)"
fault="telefoneServlet_faultHandler(event)" />
function que recebe o resultado do HTTPService
private function getFonesXmlResult(event:ResultEvent):void
{
fones = null;
//verificando se o resultado não veio nulo
if ( event.result.list != null )
{
//recebendo a lista com os objetos, só que o flex os traz com o ObjectProxy e não como a classe Fone.
//O Flex não deixa eu fazer o casting para Fone, o que me obriga a fazer atributo por atributo
var objList : Object = event.result.list["br.com.sistema.model.Fone"];
fones = new ArrayCollection();
if (objList.hasOwnProperty("length"))
{
//sou obrigado a percorrer toda a lista e pegar um a um e campo a campo
for each (var p:ObjectProxy in objList )
{
fones.addItem(getFoneFromObjProxy(p));
}
}
else
{
fones.addItem(getFoneFromObjProxy(objList as ObjectProxy ))
}
}
//criando um objeto Fone campo a campo e retornando ele para ser inserido na lista de Fones
private function getFoneFromObjProxy(p : ObjectProxy):Fone
{
var f : Fone = new Fone();
f.id_Fone = p.id_Fone;
f.nomeConjuge = p.nomeConjuge;
f.nomePessoa = p.nomePessoa;
if (p.dataCadastro is Date )
{
f.dataCadastro = p.dataCadastro;
}
f.fone1 = p.fone1;
f.dDD = p.dDD;
f.fone2 = p.fone2;
f.dDD2 = p.dDD2;
f.fone3 = p.fone3;
f.dDD3 = p.dDD3;
if (!isNaN(p.ramal))
{
f.ramal = p.ramal;
f.ramal2 = p.ramal2;
}
else
{
f.ramal = 0;
}
if (p.departamento != null)
{
var depto : Departamento = new Departamento();
depto.id_Departamento = p.departamento.id_Departamento
depto.nome = p.nome;
f.departamento = depto;
}
f.diaAniversario = p.diaAniversario;
f.mesAniversario = p.mesAniversario;
f.observacao = p.observacao;
return f;
}
Depois eu apenas coloco a lista de telefones no Datagrid.
É isso aí galera, espero que possa ajudar alguém!
O Fórum do flex aqui no GUJ, não é muito legal, geralmente vejo poucas respostas, se alguém
souber de algum fórum legal, me avise!
Um abraço!