Passar objeto JAVA <-> FLEX - [RESOLVIDO]

Boa tarde pessoal!!!

Depois de ler alguns artigos e tutoriais, avancei com o problemas mas enrrosquei novamente:

Estou usando FLEX+ JAVA+BlaseDS

Crieu uma classe java:

package br.com.krill;

public class Veiculo {
	public String VeiPlaca;
	public String TpVeiCod;
	public String FabrVeiCod;
	public String ModVeiCod;
	public String TpCargaID;

\\gets e sets omitidos

}

E um arquivo em Action Scrip correspondente:

package scripts;
{
	[RemoteClass(alias="br.com.krill.Veiculo")]
	public class Veiculo                           
	{
		public var VeiPlaca:String;
		public var TpVeiCod:String;
		public var FabrVeiCod:String;
		public var ModVeiCod:String;
		public var TpCargaID:String;
	
		public function getVeiPlaca():String {
			return VeiPlaca;
		}
		public function setVeiPlaca(veiPlaca:String):void {
			VeiPlaca = veiPlaca;
		}
	}
}

A dúvida é de como utilizar essa classe no meu MXML.
Gostaria de instanciar o veículo, setar os valores e passar para uma classe JAVA.

Agradeço a quem puder ajudar

Abraço

Marco Aurélio

vc ja configurou seu remoting-config.xml?
com as classes mapeadas com os destinations correspondentes?
caso ja tenha feito isto, vamos assumir que mapeou um destination com o nome de “SeuDestination” é só fazer o seguinte:
la no seu mxml

faça algo como isto:

<fx:Declarations>
<mx:RemoteObject id="service" destination="SeuDestination" result="resultOk(event)"  fault="resultFail(event)" showBusyCursor="true" />

</fx:Declarations>

dai vamos assumir que na sua classe mapeada com o nome de SeuDestination seja esta:


public class SeuDestination {
    
   public void doThink(Veiculo v) {
      //faz as bagaças
   }
 
}

e la no seu mxml vc vai ter uma algo assim:

var veiculo:Veiculo = new Veiculo();
//seta os parametros no veiculo
service.doThink(veiculo); //sua chamada ao java

e sua resposta vira nesta function:


public function resultOk(event:ResultEvent):void {
   //sua resposta do java...
}

espero ter ajudado…

Olá Luis;

Ajudou bastante, as coisas agora ficaram mais claras, porém um erro ainda me incomoda:

No meu remoting-config eu coloquei:

    &lt;destination id="Veiculo"&gt;
          &lt;properties&gt;
              &lt;source&gt;br.com.krill.Veiculo&lt;/source&gt;
          &lt;/properties&gt;
    &lt;/destination&gt;

E no meu mxml eu fiz:

	&lt;mx:RemoteObject id="Veiculo" destination="Veiculo"&gt;
	&lt;/mx:RemoteObject&gt;

E (ainda no meu mxml) logo abaixo eu declarei:

			[Bindable]
			public var vVeicObj:Veiculo = new Veiculo(); 

Mas há um erro na linha acima:

Pode me ajudar?

Obrigado!

Marco Aurélio

vc importou a sua classe Veiculo no seu mxml?
ele não ta achando a classe Veiculo…
provavelmente vc não deve te-la importado…

posta ai o seu mxml para eu te ajudar melhor…

Vc não deve ligar no seu acesso remoto sua classe de domínio. Vc deve criar uma classe de serviço que retorne seu veiculo. Esse serviço é reponsável por fazer a busca no BD, fazer log e etc.

Recomendo fazer um curso básico de Flex, pq aí a coisa anda com mais velocidade. Recomendo, meio que sendo suspeito, a Nuccitec.

[]s

[quote=renzonuccitelli] Vc não deve ligar no seu acesso remoto sua classe de domínio. Vc deve criar uma classe de serviço que retorne seu veiculo. Esse serviço é reponsável por fazer a busca no BD, fazer log e etc.

Recomendo fazer um curso básico de Flex, pq aí a coisa anda com mais velocidade. Recomendo, meio que sendo suspeito, a Nuccitec.

[]s[/quote]

É verdade mas estes são outros 500… primeiro temos que mostrar a ele como acontece a conexão… e depois a colocar as coisas em seus devido lugares…
mas o ideal é a integração com Spring no java e Swizz no Flex… dai sim a coisa fica show…

[quote=luistiagos][quote=renzonuccitelli] Vc não deve ligar no seu acesso remoto sua classe de domínio. Vc deve criar uma classe de serviço que retorne seu veiculo. Esse serviço é reponsável por fazer a busca no BD, fazer log e etc.

Recomendo fazer um curso básico de Flex, pq aí a coisa anda com mais velocidade. Recomendo, meio que sendo suspeito, a Nuccitec.

[]s[/quote]

É verdade mas estes são outros 500… primeiro temos que mostrar a ele como acontece a conexão… e depois a colocar as coisas em seus devido lugares…
mas o ideal é a integração com Spring no java e Swizz no Flex… dai sim a coisa fica show…[/quote]

Sim, mas mesmo pra esse exemplo simples, ele deve indicar outra classe que conterá o método remoto a ser executado. Do jeito que está sendo feito, para que ele quer simplesmente declarar o dominio no java e flex e a coisa funciona sozinha…

Olá Renzo e Luis;

Muito obrigado pela ajuda.
Já possuo uma classe para conexão (que chamo de DAO). Nela tenho meus métodos para lidar com o banco.
Acontece que eu estava passado uma sequencia de strings para esta classe, mas gostaria de passar um objeto (VO).

Segue meu mxml:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:vei="scripts.*" layout="absolute" width="898" height="494" xmlns:ns1="com.adobe.flex.extras.controls.*"&gt;
	&lt;mx:RemoteObject id="DAO" destination="DAO" fault="FaultDAO(event)"&gt;
		&lt;mx:method name="insVeiculo" result="resultInsVeiculo(event)" fault="FaultDAO(event)"/&gt;
	&lt;/mx:RemoteObject&gt;
	
	&lt;mx:RemoteObject id="Veiculo" destination="Veiculo"&gt;
	&lt;/mx:RemoteObject&gt;
	&lt;mx:Script source="scripts/Veiculo.as"/&gt;
	&lt;mx:Script&gt;
		&lt;![CDATA[
			import mx.managers.CursorManager;
			import mx.controls.Alert;
			import mx.collections.ArrayCollection;
			import mx.rpc.events.ResultEvent;
...

Não havia colocado a linha que direciona o arquivo Veículo.as. Notem que este arquivo está dentro de um package “scripts”. Acontece que quando eu adiciono ele no meu MXML o próprio arquivo Veiculo.as apresenta erro: “package cannot be nested”.

segue meu Veiculo.as

package scripts;
{
	[RemoteClass(alias="br.com.krill.Veiculo")]
	public class Veiculo                           
	{
		public var VeiPlaca:String;

	//gets e sets omitidos

	}
}

Mais uma vez agradeço a atenção e colaboração!

Marco A.

>

Olá Pessoal;

Agradeço a ajuda!

Resolvi o problema!!!

Caso alguem esteja com problema parecido , fico a disposição para auxiliar!

Abraço!

Marco A.