Flex + WebService - HELP ! ! !

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:

[code] public Projeto updateProjetos(Projeto projeto) {

	System.out.println(projeto);
	
	return projeto;
	
}[/code]

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:

[code]<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

&lt;mx&#58;Script&gt;
	&lt;!&#91;CDATA&#91;
		import mx.utils.ArrayUtil;
		import mx.collections.ArrayCollection;
		
		private function teste&#40;&#41;&#58;void &#123;
	
			var projetoArray&#58;Array = new Array&#40;&#41;;
			
  			    var projeto&#58;Projeto = new Projeto&#40;&#41;;
  			    projeto.projeto = &quot;Projeto A&quot;;
  			    projeto.coordenador = &quot;Fulano&quot;;
  			    projeto.area = &quot;XYZ&quot;;
		    
		    wsTeste.updateProjetos&#40; projeto &#41;;
			
		&#125;
	&#93;&#93;&gt;
&lt;/mx&#58;Script&gt;

&lt;mx&#58;WebService 
	id=&quot;wsTeste&quot; 
	wsdl=&quot;http&#58;//localhost&#58;8080/Teste/wsdl/Teste.wsdl&quot;
	showBusyCursor=&quot;true&quot;&gt;
	&lt;mx&#58;operation name=&quot;updateProjetos&quot; &gt;

	&lt;/mx&#58;operation&gt;
&lt;/mx&#58;WebService&gt;

&lt;mx&#58;Button x=&quot;10&quot; y=&quot;10&quot; label=&quot;Button&quot; click=&quot;teste&#40;&#41;;&quot;/&gt;
&lt;mx&#58;DataGrid x=&quot;10&quot; y=&quot;40&quot; dataProvider=&quot;&#123;wsTeste.updateProjetos.lastResult&#125;&quot;&gt;
	&lt;mx&#58;columns&gt;
		&lt;mx&#58;DataGridColumn headerText=&quot;Projeto&quot; dataField=&quot;projeto&quot;/&gt;
		&lt;mx&#58;DataGridColumn headerText=&quot;Coordenador&quot; dataField=&quot;coordenador&quot;/&gt;
		&lt;mx&#58;DataGridColumn headerText=&quot;Area&quot; dataField=&quot;area&quot;/&gt;
	&lt;/mx&#58;columns&gt;
&lt;/mx&#58;DataGrid&gt;

</mx:Application>[/code]

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

package &#123; public class Projeto &#123; public var projeto&#58;String; public var coordenador&#58;String; public var area&#58;String; &#125; &#125;

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

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

[code] public Projeto[] updateProjetos(Projeto[] listaProjetos) {

	System.out.println&#40;listaProjetos&#41;;
	
	return listaProjetos;
	
&#125;[/code]

E o Flex alterei pra ficar da seguinte forma:

[code]<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

&lt;mx&#58;Script&gt;
	&lt;!&#91;CDATA&#91;
		import mx.utils.ArrayUtil;
		import mx.collections.ArrayCollection;
		
		private function teste&#40;&#41;&#58;void &#123;
	
			var projetoArray&#58;Array = new Array&#40;&#41;;
			
			for&#40; var i&#58;Number = 0; i &lt; 5; i++ &#41; &#123;
  			    var projeto&#58;Projeto = new Projeto&#40;&#41;;
  			    projeto.projeto = &quot;Projeto A&quot;;
  			    projeto.coordenador = &quot;Fulano&quot;;
  			    projeto.area = &quot;XYZ&quot;;
			    projetoArray.push&#40; projeto &#41;;
			&#125;
		    
		    wsTeste.updateProjetos&#40; projetoArray &#41;;
			
		&#125;
	&#93;&#93;&gt;
&lt;/mx&#58;Script&gt;

&lt;mx&#58;WebService 
	id=&quot;wsTeste&quot; 
	wsdl=&quot;http&#58;//localhost&#58;8080/Teste/wsdl/Teste.wsdl&quot;
	showBusyCursor=&quot;true&quot;&gt;
	&lt;mx&#58;operation name=&quot;updateProjetos&quot; &gt;

	&lt;/mx&#58;operation&gt;
&lt;/mx&#58;WebService&gt;

&lt;mx&#58;Button x=&quot;10&quot; y=&quot;10&quot; label=&quot;Button&quot; click=&quot;teste&#40;&#41;;&quot;/&gt;
&lt;mx&#58;DataGrid x=&quot;10&quot; y=&quot;40&quot; dataProvider=&quot;&#123;wsTeste.updateProjetos.lastResult&#125;&quot;&gt;
	&lt;mx&#58;columns&gt;
		&lt;mx&#58;DataGridColumn headerText=&quot;Projeto&quot; dataField=&quot;projeto&quot;/&gt;
		&lt;mx&#58;DataGridColumn headerText=&quot;Coordenador&quot; dataField=&quot;coordenador&quot;/&gt;
		&lt;mx&#58;DataGridColumn headerText=&quot;Area&quot; dataField=&quot;area&quot;/&gt;
	&lt;/mx&#58;columns&gt;
&lt;/mx&#58;DataGrid&gt;

</mx:Application>[/code]

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:

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

Muito obrigado pela juda! Valeu! Abraços…

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: