Estou envolvido em um projeto onde estamos convertendo um sistema em php para java web!
Meu problema é o seguinte: me deparei com seguinte codigo:
$conn=mysql_connect('url','login','senha');mysql_select_db('banco');$consulta=mysql_query("Select aplicacao, modulo, rotina from acessos where usuario like 'login'");return$consulta
No java, esse consulta seria um resultset. Esse retorno e mandado para uma aplicacao flex que popula um datagrid. Acontece que o carregamento dos dados é feito como se o retorno fosse um tipo de tabela que armazena o nome do campo ( no caso , aplicacao, modulo e rotina ) e os valores lidos do banco. Ai o acesso e setado pelos nomes dos campos. Ex: caixa de texto ‘empresa’ recebe o campo ‘aplicacao’ do retorno.
Fui tentar fazer a mesma coisa no Java, mas não deu certo!
Alguem tem alguma ideia do q pode ser feito para obter-se o mesmo resultado??
Simples, crie um objeto com os campos e tipos que você precisa, use o resultset para popular esse objeto, criando uma lista de objetos desse tipo e o repasse para a tela Flex.
Abraços.
L
lucasgcp
Bom dia nel !
Obrigado pela resposta!!
Sem querer abusar da sua boa vontade, voce poderia me dar um exemplo??
Guardar os valores do resultset e tranquilo… so nao sei como seria para guardar os campos… =/
Abraçooo
nel
lucasgcp:
Bom dia nel !
Obrigado pela resposta!!
Sem querer abusar da sua boa vontade, voce poderia me dar um exemplo??
Guardar os valores do resultset e tranquilo... so nao sei como seria para guardar os campos.. =/
Abraçooo
Claro.
Talvez eu também não tenha sido claro.
Vamos lá!
public class SuaClasse {
String aplicacao;
String modulo;
String rotina ;
//getters and setters
}
publicclassSeuDao{//considere rs = resultset ja populadoList<SuaClasse>listSuaClasse=newArrayList<SuaClasse>();while(rs.next()){SuaClasseobjeto=newSuaClasse();objeto.setAplicacao(rs.getString("aplicacao"));//outros setterslistSuaClasse.add(objeto);}returnlistSuaClasse;
Obviamente, foi um exemplo bem simples (estou no trabalho) e podes dar nomes mais significativos e coloquei tudo como String.
Podes adicionar o tipo correto. E logicamente, a classe SeuDao vai ter um método que faça o que lhe mostrei.
Edit: havia esquecido de adicionar o objeto a lista.
Espero te-lo ajudado.
Abraços.
L
lucasgcp
Mas assim eu teria objetos apenas com os valores do resultset, nao??
O dataField é que fica responsavel por preencher o datagrid. Quando retornasse o objeto, ele reconheceria quem é o campo aplicacao, modulo e rotina nesse objeto??
L
lucasgcp
Achuuu q intendi!!
O acesso que eu iria fazer seria atraves do obj[indice].aplicacao neh?
nel
Então, lembro-me pouco do Flex e como ele acessa os valores de um objeto!
Veja exemplos na net de como ele faz isso, deve ter inúmeros.
Mas creio que o datafield tenha que ter obrigatoriamente o mesmo nome do seu campo, pois ele deve dar um get.
Ou seja, se disse que o datafield é aplicacao, seu objeto da lista deve ter um getAplicacao().
Estou supondo.
Não esqueça de dizer ao datagrid quem é sua lista.
Abraços.
So mais uma coisa: no caso o dataProvider do meu datagrid iria ser o meu objeto retornado??
=/
nel
Isso!
Seria a lista com os seus objetos.
Como dei o exemplo, seria: dataprovider={listSuaClasse}
Ou seja, passe ao dataprovider a sua lista de objetos
L
lucasgcp
Caraaa!! Você me ajudou bastantee!!
Brigadãooo!!
Só mais uma coisinha: como se trata de um retorno, eu vo ter que setar o dataProvider do dataGrid pelo actionScript… qual o tipo que eu declaro a variavel do action script??
Object mesmo, ArrayCollections ou o q?
Abraçãooo
nel
Rapaz, está forçando bastante a minha memória! rss.
Ao que me lembro, apenas Array mesmo.
Caso não funcione, teste com ArrayCollections.
Mas a principio, seria Array a = new Array();
Algo assim!
L
lucasgcp
AUEEauaeUAEAUEUahuaehUAEHUa
Brigadao pela ajuda amigo!
Ainda nao deu certo nao, mas daqui pra frente eu me viro!!
Muito obrigado!!
Forte abraço!
nel
lucasgcp:
AUEEauaeUAEAUEUahuaehUAEHUa
Brigadao pela ajuda amigo!
Ainda nao deu certo nao, mas daqui pra frente eu me viro!!
Ele retorna 3 objects direitin… mas os dados nao aparecem no grid!!
Ta tenso viu! Apanhando tanto pra fazer uma coisa taoo bobaa!!
:oops:
nel
O amigo, cade a propriedade dataprovider no seu datagrid?
L
lucasgcp
Isso que to em duvida…
Eu coloco o que no meu dataProvider nesse caso??
Pq se fosse uma variavel actionScript quando construisse a pagina e carregasse o grid, a variavel ainda estaria vazia… ou não?
de qualquer forma tentei alterar assim:
[Bindable]public var Lista:ArrayCollection;private function init():void{customersDataService.TesteDados(); }public function receivedCustomerRecords( event:ResultEvent ):void{Lista=new ArrayCollection( event.result as Array );}
Tava era dando um vacilo tremendo na hora de carregar a pagina flex!
xD
Agora to apanhando é pra popular um menu tree! :evil:
Brigadao pela ajuda!
nel
lucasgcp:
Consigui resolver nel!!
\o/
Tava era dando um vacilo tremendo na hora de carregar a pagina flex!
xD
Agora to apanhando é pra popular um menu tree! :evil:
Brigadao pela ajuda!
Show de bola.
É assim que se aprende
Apenas mostre a solução adotada e adicione [Resolvido] ao l ado do seu tópico ok!?
Abraços!
L
lucasgcp
Ok!
Eu nao tava chamando o metodo pra inicializar a variavel quando a pagina era criada!
Assim quando ele construia a pagina e carregava o dataProvider do Tree, a lista estava vazia ainda!
Ai foi so adicionar o creationComplete no mx:Application :