Boa noite meus amigos,
Estou estudando flex e me deparei com um erro do qual não consigo me livrar.
Me é exibido a seguinte mensagem:
Ao meu ver está tudo correto
Vejam o código do ContatoDAO
public class ContatoDAO extends AbstractDAO<Contato> {
public ContatoDAO() {
super("Contato");
}
}[/code]
Agora do AbstractDAO
[code]package br.com.treinamento.modelo.dao;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import br.com.treinamento.database.ConnectionFactory;
public abstract class AbstractDAO<T> {
private String tableName;
private Connection con;
private Class<T> clazz;
private Field[] fields;
@SuppressWarnings("unchecked")
public AbstractDAO(String tableName) {
this.tableName = tableName;
con = ConnectionFactory.getConnection();
try {
clazz = (Class<T>) Class.forName("br.com.treinamento.modelo.beans."
+ tableName);
fields = clazz.getDeclaredFields();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
@SuppressWarnings({ "finally" })
public ArrayList<T> getLista() {
ArrayList<T> lista = new ArrayList<T>();
String sql = String.format("SELECT * FROM %s ORDER BY id", tableName);
try {
PreparedStatement pstm = con.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
lista.add(montarObjeto(rs));
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
return lista;
}
}
private T montarObjeto(ResultSet rs) throws IllegalAccessException,
SQLException, InstantiationException {
T objectDinamic = clazz.newInstance();
for (Field field : fields) {
field.setAccessible(true);
field.set(objectDinamic, rs.getObject(field.getName()));
}
return objectDinamic;
}
@SuppressWarnings("finally")
public T getById(Long id) {
String sql = String.format("SELECT * FROM %s WHERE id=%d", tableName,id);
PreparedStatement pstm;
ResultSet rs;
T objectDinamic = null;
try {
pstm = con.prepareStatement(sql);
rs = pstm.executeQuery();
rs.next();
objectDinamic = montarObjeto(rs);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
return objectDinamic;
}
}
}
Meu arquivo Main do 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>
<mx:RemoteObject id="contato" destination="contato" fault="OnFault(event)">
<mx:method name="getLista" result="onGetLista(event)"/>
</mx:RemoteObject>
</fx:Declarations>
<s:creationComplete>
<![CDATA[
registerClassAlias("br.com.treinamento.modelo.beans.ContatoVO", br.com.treinamento.modelo.beans.ContatoVO);
contato.getLista();
]]>
</s:creationComplete>
<fx:Script>
<![CDATA[
import flash.net.registerClassAlias;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import br.com.treinamento.modelo.beans.ContatoVO;
protected function onGetLista(event:ResultEvent):void{
gridContatos.dataProvider=event.result;
}
protected function OnFault(event:FaultEvent):void{
Alert.show(event.fault.message.toString());
}
]]>
</fx:Script>
<mx:DataGrid id="gridContatos" x="57" y="67" width="489" height="175">
<mx:columns>
<mx:DataGridColumn headerText="id" dataField="id"/>
<mx:DataGridColumn headerText="Nome" dataField="Nome"/>
<mx:DataGridColumn headerText="Telefone" dataField="Telefone"/>
<mx:DataGridColumn headerText="Email" dataField="Email"/>
</mx:columns>
</mx:DataGrid>
</s:Application>
O arquivo remoting-config.xml
[code]<?xml version="1.0" encoding="UTF-8"?>
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="contato">
<properties>
<source>br.com.treinamento.modelo.dao.ContatoDAO</source>
</properties>
</destination>
[/code]
Estou usando o JBoss6 e o BlazeDS para comunicação entre as duas plataformas.
O driver do MySql está presente no server/default/lib do jboss
Serei grato mediante qualquer ajuda.
Obrigado