Olá!
Estou usando o Blazeds para conectar o Java com o Flex, o que eu estou fazendo é pegar os dados do Flex e passar para uma matriz no Java, e pegar essa Matriz e enviar para o Flex para então usá-la em um DataGrid (que é o que não está dando certo!). (sei que dá meio que uma volta, mas estou fazendo isso para aprender a conexão etc, mais como teste…)
Creio que a parte de passar os dados para um Array no Java está correta…
Vou colocar o código aqui, se alguém puder dar uma olhada e me ajudar, agradeço!
(Lembrando que é um teste e o código pode estar meio bagunçadinho, mas comentei nele)
Java:
package oi;
public class Ola {
String m[][] = new String[90][4]; // matriz bidimensional a ser usada
String anome, acurso, aue, arm; // variáveis a serem recebidas como parâmetros do flex para serem passadas na matriz
int i=0,j=0,num; // variáveis de loops etc
public String oiJava (String mnome, String mcurso, String mue, String mrm) // método de teste, apenas retorna o enviado, desconsiderá-lo
{
//String str = teti(mnome, mcurso, mue, mrm);
return "Oi "+ mnome + " " + mcurso + " " + mue + " " + mrm ;
}
public String teti(String nome, String curso, String ue, String rm) // método para guardar os dados enviados pelo flex
{ // numa matriz m[90][4]
//j=0; i=0;
if (num==2) // verificação se já executou alguma vez
{ i++; }
m[i][j]=nome;
m[i][j+1]=curso;
m[i][j+2]=ue;
m[i][j+3]=rm;
num=2; // se já executou uma vez verificará esta variável para somar ao i e adicionar outro registro
String envia = " " + m[i][0]+m[i][1]+m[i][2]+m[i][3]+ "!"; // aqui ele apenas retornará ao flex para ser exibido em um
return envia; // alert... apenas teste...
}
public String[][] getdata() // método que enviará o array para o flex
{
return m;
}
}
Flex:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<mx:RemoteObject id="ro" destination="olaService" result="ro_resultHandler(event);" fault="ro_faultHandler(event);"/>
<s:RemoteObject id="rochama" destination="olaService" fault="ro_faultHandler(event);" />
</fx:Declarations>
<fx:Script>
<![CDATA[
import flash.display.BlendMode;
import flash.events.*;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.system.*;
import flash.system.fscommand;
import flash.utils.*;
import mx.collections.*;
import mx.collections.ArrayCollection;
import mx.controls.*;
import mx.controls.Alert;
import mx.controls.Button;
import mx.controls.TextInput;
import mx.core.*;
import mx.events.*;
import mx.events.MenuEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.UIDUtil;
[bindable] public var colarray:ArrayCollection = new ArrayCollection; // array que supostamente deve receber o array
// do java, não sei se está certo
private function OlaMundo():void
{
var name:String = txtNome.text;
var cur:String = txtCurso.text;
var uni:String = txtUE.text;
var regm:String = txtRM.text;
ro.teti.send(name,cur,uni,regm); // chamará a função do java através do RemoteObject que guarda os dados
}
private function chama():void // pegar o array bidimensional do java e passar para um ArrayCollection supostamente
{ // para passar para um DataGrid ... não dá certo... [verificar
// as propriedades do DataGrid também... ]
var ar:Array = rochama.getdata();
//var a:ArrayList = new ArrayList(rochama.getdata());
colarray.addItem(ar);
//colarray = rochama.getdata();
colarray.refresh();
dtgrid.dataProvider = colarray;
dtgrid.enabled = true;
dtgrid.visible = true;
}
protected function ro_resultHandler(event:ResultEvent):void {
// TODO Auto-generated method stub
Alert.show("res: "+event.result.toString());
}
protected function ro_faultHandler(event:FaultEvent):void {
// TODO Auto-generated method stub
Alert.show("Error : "+event.toString())
}
protected function txtRM_focusInHandler(event:FocusEvent):void
{
// TODO Auto-generated method stub
txtRM.text="";
}
protected function txtNome_focusInHandler(event:FocusEvent):void
{
// TODO Auto-generated method stub
txtNome.text = "";
}
protected function txtUE_focusInHandler(event:FocusEvent):void
{
// TODO Auto-generated method stub
txtUE.text="";
}
protected function txtCurso_focusInHandler(event:FocusEvent):void
{
// TODO Auto-generated method stub
txtCurso.text = "";
}
]]>
</fx:Script>
<s:Button x="339" y="111" label="OlaJava" click="OlaMundo();"/>
<s:Button x="573" y="111" label="Grid" id="btngrid" click="chama();"/>
<s:TextInput x="143" y="20" id="txtNome" text="Digite Nome" focusIn="txtNome_focusInHandler(event)"/>
<s:TextInput x="143" y="50" id="txtCurso" text="Digite Curso" focusIn="txtCurso_focusInHandler(event)"/>
<s:TextInput x="143" y="80" id="txtUE" text="Digite Unidade Escolar" focusIn="txtUE_focusInHandler(event)"/>
<s:TextInput x="143" y="110" id="txtRM" focusIn="txtRM_focusInHandler(event)" text="Digite RM"/>
<mx:DataGrid x="138" y="199" width="437" height="258" id="dtgrid" enabled="false" visible="false">
<mx:columns>
<mx:DataGridColumn headerText="Nome" dataField="col1"/>
<mx:DataGridColumn headerText="Curso" dataField="col2"/>
<mx:DataGridColumn headerText="UE" dataField="col3"/>
<mx:DataGridColumn headerText="RM" dataField="col3"/>
</mx:columns>
</mx:DataGrid>
</s:Application>
Deu pra entender?
Grata!