Objeto de Flex para Java utilizando VO (Value Object)

8 respostas
warley

Olá a todos.

Pessoal eu estou tentando enviar um objeto do Flex para o Java. Seu que eu tenho que usar VO (Value Object), mas eu não entendi muito bem como usar o VO.

Eu fiz uma médo em Java com a seguinte assinatura:

public void salvar(PortariaDTO portariaDTO){
   System.out.println("funciona "+ portariaDTO.getCodigo());
}

E eu criei uma função no Flex e achei esta função através de um botão Salvar. Mas não consegui fazer o parse.

private function salve():void{
				
	var portariaDTO: PortariaDTO = new PortariaDTO();
				
	portariaDTO.codigo = 1;
	portariaDTO.descricao = "asdfasdfasd";
	portariaDTO.status = 1;
								
	actionPortaria.salvar(portariaDTO);
				
}

<mx:Button x="90" y="128" label="Salvar" click="{salve()}">

Alguém pode me dar uma dica de como montar este VO ?

Obrigado.

8 Respostas

F

Warley,
Vc terá q ter uma classe AS (correspondente a classe Java) com a metatag RemoteClass (apontando para a classe Java) e usar RemoteObject.
Dê uma olhada nas palestras no http://www.flexmania.com.br/gravacoes.php sobre BlazeDS.
Te recomendo tb: http://www.adobe.com/support/documentation/en/flex/ o pdf Flex 3 Developer Guide Chapter 38: Accessing Server-Side Data with Flex, Using RemoteObject components.

[]s

Tchello

Fabio falou tudo!
Encurtando a historia, use RemoteObjects.

Você está usando BlazeDS, correto?

warley

Sim, estou usando o BlazeDS.

Eu não conhecia o Flex 3 Developer Guide. Vou dar uma olhada nele.

Tchello

Tem esse tutorial da propria adobe:
http://www.adobe.com/devnet/flex/articles/flex_hibernate.html?devcon=f4

Perto do que se encontra por ai esse tutorial é uma maravilhas, visto que o resto (principalmente em português) não passam de códigos cuspidos e muito mal explicados em blogs nojentos (sinceridade é tudo).

VanHelsing

Galera, to com o problema inverso… Vamos la… Estou desenvolvendo um pequeno sistema Flex+Java+BlazeDS+Hibernate.
Eu consigo transferir meu objeto pro Java persistir no banco (inclusão).

FLEX

var tipoimovelVO:TipoImoveisVO = new TipoImoveisVO();
		tipoimovelVO.id = int(txtId.text);
		tipoimovelVO.descricao = txtDescricao.text;
		conecta.salva(tipoimovelVO);  --- Funciona Perfeitamente

Minha dificultade ta no seguinte. Quando seleciono um registro no DataGrid e quero recupera-lo no banco.
Estou fazendo dessa forma:

FLEX

var abreCadastro:CadTipoImovel=CadTipoImovel(PopUpManager.createPopUp(this,CadTipoImovel,true));
		PopUpManager.centerPopUp(abreCadastro);
		abreCadastro.addEventListener(MeuEvento.OK, atualizaGrid);
		abreCadastro.setVisible(true);
		abreCadastro.txtDescricao.setFocus();

		var tipo:TipoImoveisVO = new TipoImoveisVO();
		servico.find(int(dg.selectedItem.id));
			
		abreCadastro.txtId.text = tipo.id.toString();
		abreCadastro.txtDescricao.text = tipo.descricao;
								
		abreCadastro.visible = true;
		abreCadastro.txtDescricao.setFocus();

JAVA

public TipoImoveisVO find(int cod)
	{
		TipoImoveisVO tp = new TipoImoveisVO();
		TipoImoveisVO tp1 = new TipoImoveisVO();
		
		TipoImoveisDAO us = new TipoImoveisDAO();
		us.carrega(tp,cod);
		
		tp1.setId(tp.getId());
		tp1.setDescricao(tp.getDescricao());
		
		return tp1;
	}

Me ajudem … :smiley:

horochovec

Ola

O que ocorre é que teu serviço remoto esta fazendo uma solicitação ao Java, e logo em seguida você já está tentando informar as informações buscadas no java para dentro do objeto no Flex.

Você precisa adicionar um listner para aguardar o retorno do teu serviço remoto e depois sim, passar as informações para o objeto Flex.

Essa informação só é válida se realmente o teu “servico” for um RemoteObject.

Na declaração do método “find” do teu RemoteObject adicione um result=“metodoADispararNoFimDaPesquisa(event);” .

Espero ter ajudado

VanHelsing

Matou a pau…

Falta de atencao minha… :lol:

Valeu mesmo… !!!

horochovec

Show :smiley:

Criado 28 de dezembro de 2009
Ultima resposta 18 de jan. de 2010
Respostas 8
Participantes 5