Flex + WebService - HELP ! ! !

1 resposta
Z

Pessoal, bom dia!

Comecei a usar Flex a mais ou menos um mês e estou muito satisfeito com a ferramenta. Para fazer o acesso aos dados, estou utilizando WebService´s, e para contruílos esotu utilizando a combinação Eclipse + WTP + Plugin TomCat. Está tudo funcionando muito bem.
Minha difuculdade agora está em chamar um método onde o argumento é um Array de ComplexType, ou seja, uma classe que criei para carregar meus dados.
Vamos aos códigos. Inicialmente, para testar, fiz um método onde o argumento é apenas um complexType, dessa forma:

public Projeto updateProjetos(Projeto projeto) {
	
		System.out.println(projeto);
		
		return projeto;
		
	}

E aqui minha classe Projeto:

public class Projeto {
	public String projeto;
	public String coordenador;
	public String area;
}

Para chamar esse serviço, fiz o seguinte codigo no Flex:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	
	<mx:Script>
		<![CDATA[
			import mx.utils.ArrayUtil;
			import mx.collections.ArrayCollection;
			
			private function teste():void {
		
				var projetoArray:Array = new Array();
				
	  			    var projeto:Projeto = new Projeto();
	  			    projeto.projeto = "Projeto A";
	  			    projeto.coordenador = "Fulano";
	  			    projeto.area = "XYZ";
			    
			    wsTeste.updateProjetos( projeto );
				
			}
		]]>
	</mx:Script>

	<mx:WebService 
		id="wsTeste" 
		wsdl="http://localhost:8080/Teste/wsdl/Teste.wsdl"
		showBusyCursor="true">
		<mx:operation name="updateProjetos" >

		</mx:operation>
	</mx:WebService>
	
	<mx:Button x="10" y="10" label="Button" click="teste();"/>
	<mx:DataGrid x="10" y="40" dataProvider="{wsTeste.updateProjetos.lastResult}">
		<mx:columns>
			<mx:DataGridColumn headerText="Projeto" dataField="projeto"/>
			<mx:DataGridColumn headerText="Coordenador" dataField="coordenador"/>
			<mx:DataGridColumn headerText="Area" dataField="area"/>
		</mx:columns>
	</mx:DataGrid>
	
</mx:Application>

E também clirei no Flex uma ActionScript Class correspondente a classe projeto do Java:

package
{
	public class Projeto
	{
		public var projeto:String;
		public var coordenador:String;
		public var area:String;
	}
}

Esse código acima funciona corretamente. Uma beleza!!!

Mas minha necessidade é enviar um array da classe Projeto pro serviço atualizar, dessa forma:

public Projeto[] updateProjetos(Projeto[] listaProjetos) {
	
		System.out.println(listaProjetos);
		
		return listaProjetos;
		
	}

E o Flex alterei pra ficar da seguinte forma:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	
	<mx:Script>
		<![CDATA[
			import mx.utils.ArrayUtil;
			import mx.collections.ArrayCollection;
			
			private function teste():void {
		
				var projetoArray:Array = new Array();
				
				for( var i:Number = 0; i < 5; i++ ) {
	  			    var projeto:Projeto = new Projeto();
	  			    projeto.projeto = "Projeto A";
	  			    projeto.coordenador = "Fulano";
	  			    projeto.area = "XYZ";
				    projetoArray.push( projeto );
				}
			    
			    wsTeste.updateProjetos( projetoArray );
				
			}
		]]>
	</mx:Script>

	<mx:WebService 
		id="wsTeste" 
		wsdl="http://localhost:8080/Teste/wsdl/Teste.wsdl"
		showBusyCursor="true">
		<mx:operation name="updateProjetos" >

		</mx:operation>
	</mx:WebService>
	
	<mx:Button x="10" y="10" label="Button" click="teste();"/>
	<mx:DataGrid x="10" y="40" dataProvider="{wsTeste.updateProjetos.lastResult}">
		<mx:columns>
			<mx:DataGridColumn headerText="Projeto" dataField="projeto"/>
			<mx:DataGridColumn headerText="Coordenador" dataField="coordenador"/>
			<mx:DataGridColumn headerText="Area" dataField="area"/>
		</mx:columns>
	</mx:DataGrid>
	
</mx:Application>

Porém quando chamo o serviço, ele recebe nulo, ou seja, o argumento listaProjetos vem como 'null'.

Alguem tem uma ideia de algo que possa estar fazendo de errado????

Já esotu começando a perder as esperanças....

Ah, peguei o seguinte código como exemplo:

[url]http://www.themidnightcoders.com/blog/2007/03/flex-remoteobject-vs-webservice.html[/url]

Muito obrigado pela juda! Valeu! Abraços...

1 Resposta

F

Amigo da uma olhada neste material, ele trata de como o Flex trabalho com Java Collections, incluindo ArrayList e HashMap

Espero que seja util

Ok

Good Luck !!

:slight_smile:

Criado 30 de março de 2007
Ultima resposta 2 de abr. de 2007
Respostas 1
Participantes 2