Transferindo Dados entre Flex e Java Utilizando VO (Value Object)
VO é um Pattern para transferência de dados. A utilização desse Pattern no Flex acessando a camada de negócio (Java, no caso desse exemplo) através do protocolo AMF (Remoting) é muito simples e prática. Um objeto VO pode possuir vários tipos de objetos encapsulados. Ao trafegar os dados, apenas o objeto VO é enviado e recebido como parâmetro, facilitando assim a manutenção, organização e entendimento do código, uma vez que o Java já faz a serialização do VO enviado pelo Flex. Imagine a necessidade de enviar mais de 20 dados de um novo funcionário, através de um formulário de cadastro. Como seriam passados esses parâmetros sem a utilização de VO? E se futuramente tivesse que adicionar ou remover alguns dados? Agora será apresentado um exemplo prático: Tanto no backend (Java) quanto no frontend (Flex) é criado uma classe VO. As duas classes possuem as mesmas propriedades. No VO do Flex é feito um registro da classe Java.
VO de funcionário em Java
public class FuncionarioVO implements Serializable {
static final long serialVersionUID=0;
private String nome;
private String email;
private String endereco;
private Number telefone;
// Gets e Sets
}
VO de funcionário em Flex
public var nome: String;
public var email: String;
public var endereco: String;
public var telefone: String
public static var registered:Boolean = Object.registerClass(“com.dclick.exemplo.vo.FuncionarioVO”, com.dclick.exemplo.vo.FuncionarioVO );
}
Comparando as duas classes percebe-se que não é necessário definir os Gets e Sets da classe Flex. Na classe Flex é observado a definição da variável registered que faz a associação entre as duas camadas.
Populando o VO de funcionário no Flex.
// Método que popula e envia o formulário
public function enviaFuncionario():FuncionarioVO{
// Criação do objeto VO - instância da classe FuncionarioVO.
var funcionarioVO:FuncionarioVO = new FuncionarioVO();
funcionarioVO.nome = model.nome;
funcionarioVO.email = model.email;
funcionarioVO.endereco = model.telefone;
funcionarioVO.telefone = model.ramal;
// Chamada do método enviaFuncionario da conexão Remoting criada // Envio apenas do VO contendo todos os dados encapsulados.
var call = service.enviaFuncionario(funcionarioVO);
}
Manipulando o VO de funcionário no Java
com.dclick.exemplo.vo.FuncionarioVO;
public static boolean enviaFuncionario (Serializable obj){
funcionarioVO vo = (FuncionarioVO) obj;
// Agora podemos obter todos os dados do nosso VO.
String nome = vo.getNome();
String email = vo.getEmail();
String endereco = vo.getEndereco();
String telefone = vo.getTelefone()
// Continua o código da classe.
return true;
}
Agora, suponha que esse funcionário estará alocado em mais de um projeto. Nesse caso é necessário criar um VO de projetos e popular dentro do VO de funcionário.
VO de projetos em Java
public class ProjetoVO implements Serializable {
static final long serialVersionUID=0;
private String codigo_projeto;
private String nome_projeto;
// Gets e Sets
}
VO de projetos em Flex
public var nome_projeto: String;
public static var registered:Boolean = Object.registerClass(“com.dclick.exemplo.vo.ProjetoVO”, com.dclick.exemplo.vo.ProjetoVO );
}
Alteração da Classe VO de funcionários em Java
import java.util.ArrayList;
import java.util.List;
public class FuncionarioVO implements Serializable {
static final long serialVersionUID=0;
private String nome;
private String email;
private String endereco;
private Number telefone;
private List projetoVO = new ArrayList();
// Gets e Sets
}
Alteração da Classe VO de funcionários em Flex
public var email: String;
public var endereco: String;
public var telefone: String
public var projeto_vo:Array = new Array();
public static var registered:Boolean = Object.registerClass(“com.dclick.exemplo.vo.FuncionarioVO”, com.dclick.exemplo.vo.FuncionarioVO );
}
Populando o VO de funcionário no Flex.
import com.dclick.exemplo.vo.FuncionarioVO;
import com.dclick.exemplo.vo.ProjetoVO; // Método que popula e envia o formulário
public function enviaFuncionario():FuncionarioVO{
// Criação do objeto VO - instância da classe FuncionarioVO.
var funcionarioVO:FuncionarioVO = new FuncionarioVO();
funcionarioVO.nome = model.nome;
funcionarioVO.email = model.email;
funcionarioVO.endereco = model.telefone;
funcionarioVO.telefone = model.ramal;
funcionarioVO.projeto_vo = new Array():
for (var i:Number = 0; i
var projetoVO:ProjetoVO = new ProjetoVO;
projetoVO.codigo_projeto = model.projetos_selecionados[i];
funcionarioVO.projeto_vo.addItem(projetoVO);
}
// Chamada do método enviaFuncionario da conexão Remoting criada // Envio apenas do VO contendo todos os dados encapsulados.
var call = service.enviaFuncionario(funcionarioVO);
}
Manipulando o VO de funcionário no Java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
com.dclick.exemplo.vo.FuncionarioVO;
public static boolean enviaFuncionario (Serializable obj){
funcionarioVO vo = (FuncionarioVO) obj;
// Agora podemos obter todos os dados do nosso VO.
String nome = vo.getNome();
String email = vo.getEmail();
String endereco = vo.getEndereco();
String telefone = vo.getTelefone()
List projetos = vo.getprojetosVO();
Iterator i = projetos.iterator();
while (i.hasNext()){
ProjetoVO projVO = (ProjetoVO) i.next();
System.out.println(“Código do Projeto “ + projVO.codigo_projeto)
}
// Continua o código da classe.
return true;
}
6 comentários para “Transferindo Dados entre Flex e Java Utilizando VO (Value Object)”
[...] Na terceira aba enviamos o objeto EmployeeVO para o servidor simulando um cadastro. O método chamado é o addEmployee(). Observe a classe java e veja que estamos enviando um VO e o mesmo está sendo serializado no servidor. Caso se interessem mais por esse assunto, o Rubens fez um post a respeito disso. O objetivo aqui era mostrar que a implementação de VO pelo lado do servidor não muda com o Flex Data Services 2.0. Faça um teste de “cadastro” e veja os dados aparecendo no prompt do servidor flexservices: [...]
nem
Interessantissimo essa maneira de enviar os dados !!
Se puder exlique melhor fiquei um pouco perdido na criaçao das classes no java!
Um abraço fique com Deus
Tomei a liberdade de aprimorar seu tutorial,
acesse:
http://e-digows.blogspot.com/2007/03/flex-java-e-mysql-troca-de-objetos.html
Olá,
Eu achei muito interessante o material, porém quando tento fazer ele funcionar na minha máquina dá pau,
Gostaria de ver se vc tem o código fonte desse exemplo pra me ajudar….
Obrigado,
Jean
fala com ele
Adicionar comentário
[...] Na terceira aba enviamos o objeto EmployeeVO para o servidor simulando um cadastro. O método chamado é o addEmployee(). Observe a classe java e veja que estamos enviando um VO e o mesmo está sendo serializado no servidor. Caso se interessem mais por esse assunto, o Rubens fez um post a respeito disso. O objetivo aqui era mostrar que a implementação de VO pelo lado do servidor não muda com o Flex Data Services 2.0. Faça um teste de “cadastro” e veja os dados aparecendo no prompt do servidor flexservices: [...]
nem
Interessantissimo essa maneira de enviar os dados !!
Se puder exlique melhor fiquei um pouco perdido na criaçao das classes no java!
Um abraço fique com Deus
Tomei a liberdade de aprimorar seu tutorial,
acesse:
http://e-digows.blogspot.com/2007/03/flex-java-e-mysql-troca-de-objetos.html
Olá,
Eu achei muito interessante o material, porém quando tento fazer ele funcionar na minha máquina dá pau,
Gostaria de ver se vc tem o código fonte desse exemplo pra me ajudar….
Obrigado,
Jean
fala com ele

