IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Récuperer donnée java dans Flex


Sujet :

Flex

  1. #1
    Nouveau membre du Club Avatar de issamjet
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 28
    Points
    28
    Par défaut Récuperer donnée java dans Flex
    Salut

    Je travaille sur Flex Builder 3 et j'utilise BlazeDs pour faire la liaison entre l'interface Flex et la côté serveur en JEE

    Dans ma classe Java j'ai une fonction qui me retourne une liste d'objet, je l'ai bien testé et ça marche, j'ai mit aussi mes identificateurs d'objet dans un tableau de String. là tout est bon,
    mon souci c'est quand je peux afficher ce tableau de String ou bien liste d'objet dans la partie Flex, c'est à dire je dois récuperer ces données dans ma page MXML je me demande que je dois faire, est-ce que je dois charger ma liste ou bien le table dans un ArrayCollection, comment je peux arriver à les afficher dans un DataGrid ou bien dans un ComboBox, quelqu'un a une idée comment je dois prendre l'initiative, merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <![CDATA[
    			import mx.collections.ArrayCollection;
    			import mx.rpc.events.ResultEvent;
           [Bindable]
       	private var etapeResult:ArrayCollection = new ArrayCollection  ;
        private function afficherEtape():void {
        ro.afficher_etape();
       }
       private function resultHandler(event:ResultEvent):void
       {
        etapeResult = event.result as ArrayCollection;
       }
    		]]>
    	</mx:Script>
    	<mx:RemoteObject id="ro" destination="service" result="resultHandler(event)"/>
     
    	<mx:Button x="132" y="368" label="Afficher les étapes" click="afficherEtape()"  width="611"/>
    	<mx:ComboBox id="cmb" x="190" y="160" width="248" dataProvider="{etapeResult}"></mx:ComboBox>

    le output de la fonction afficher_etape est une liste d'objet ou un tableau de String à mon choix, je l'ai bien testé, mais il n'affiche rien dans mon ComboBox, cependant j'ai réussi à afficher un ArrayCollection statique dans mon ComboBox

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Bonjour,

    Il faut que tu indiques à ta combo box le champs qu'il doit afficher. Par exemple si dans ton objet Utilisateur, il s'agit du getter getNom() côté Java, tu auras en MXML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <mx:ComboBox id="cmb" x="190" y="160" width="248" 
    dataProvider="{etapeResult}" dataField="nom"></mx:ComboBox>
    Ensuite il faut penser à "mapper" l'objet côté Flex, c'est à dire toujours pour ton objet Utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    package samples.user
    {
        [RemoteClass(alias="samples.user.Utilisateur")]
        public class Utilisateur {
     
            public var nom:String;
     
            public var prenom:String;
     
        }
    }
    J'espère avoir été assez clair n'hésite à demander des précisions le cas échéant.

  3. #3
    Nouveau membre du Club Avatar de issamjet
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Merci ellene pour la réponse

    Donc je dois tout d'abord créer ma ComboBox ou Datagrid (normalement c'est pareil), j'ai les attributs suivants dans ma table (id_etap, nom, table_nom, scenario_ref)
    donc le DataGrid sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <mx:DataGrid dataProvider="{ro.afficher_etape.result}"   width="401" height="204">
    <mx:columns>
    <mx:Array>
    <mx:DataGridColumn  headerText="id_etape" dataField="id_etape" />
    <mx:DataGridColumn  headerText="nom" dataField="nom"/>
    <mx:DataGridColumn  headerText="scenario_ref" dataField="scenario_ref" />
    <mx:DataGridColumn headerText="table_nom" dataField="table_nom"/>
    </mx:Array>
    </mx:columns>
    </mx:DataGrid>

    Ensuite je dois passer à mapper les objets côté Flex, et là vraiment j'ai pas compris, j'ai une classe service que je fais appel à une fonction getList qui va me retourner une liste des étapes (objets) à l'aide de BlazeDs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public List<Etape> afficher_etape()throws Exception{
     
    			EtapeManagerImpl etapeManagerImpl = new EtapeManagerImpl() ;
     
    			List<Etape> l = etapeManagerImpl.getList(); 
     
    		for(int i=0;i<l.size();i++){
    			System.out.println( l.get(i).getIdEtape()) ;
    		}
    		return l ;
    	}
    pour la fonction afficher_etape je l'ai bien testé et ça marche, pour la liaison entre l'interface Flex et ma classe Java j'ai pas de soucis aussi, même pour l'insertion je l'ai testé et ça marche parfaitement bien
    alors, je dois chercher comment afficher ma liste d'objets dans l'interface Flex.

    pour le code que tu m'as donné, où je dois l'implémenter est-ce que dans ma page MXML, sinn est-ce que je dois utiliser mon classe Java de mapping c'est à dire etape.java

    Si t'as une réponse je serai réconnaissant, merci d'avance

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    j'ai une classe service que je fais appel à une fonction getList qui va me retourner une liste des étapes (objets) à l'aide de BlazeDs
    Oui en fait il te faut mapper ces objets, c'est à dire que tu as une classe java Etape côté serveur. Comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    package monpackage;
     
    public class Etape {
     
         private Integer id_etape;
     
         private String nom;
     
         // etc...
     
        public Integer getId_etape() {
                return this.id_etape;
        }
     
        public Integer setId_etape(Integer id_etape) {
                this.id_etape = id_etape;
        }
     
       // etc... mettre tous les getters et setters
     
    }
    Attention: il ne faut tu dois avoir tous les getter et les setter pour que ça puisse fonctionner sinon il te manquera des informations.

    Tu dois la déclarer côté Flex de la façon suivante dans une classe ActionScript Etape.as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package monpackage
    {
        [RemoteClass(alias="monpackage.Etape")]
        public class Etape {
            
            public var id_etape:Number;
    
            public var nom:String;
    
            public var scenario_ref:String;
            
            // etc ...
    
        }
    }
    En rouge: le nom de ta classe java
    Ce "mapping" effectué tu devrais pouvoir gérer les informations dans tes datagrids sans soucis.

  5. #5
    Nouveau membre du Club Avatar de issamjet
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Salut

    Merci bien pour ta réponse ellene, j'ai bien suit la démarche que tu m'as donné mais ça marche pas, il n'affiche rien même pas un code d'erreur, quand je clique sur le bouton normalement il doit m'afficher les données enregistrées dans la table Etape, mais c'était pas le cas, il n'affiche rien.

    Bon mon but c'est juste d'afficher mes données dans l'interface flex, quelque soit la méthode donc je me demande s'il y en a d'autres solutions.

    Est-ce qu'il vaut mieux utiliser un web service par exemple, si t'as une idée est-ce qu'une méthode implémentée en web service peut me retourner un objet ou bien liste d'objet

    sinon puis-je modifier la méthode dans ma classe java pour qu'elle me donne par exemple une liste de string ou bien de un tableau ....
    j'ai arrivé à afficher un String retourné depuis la classe Java dans un Label, donc je crois que le souci vient de la structure de donnée à utiliser.

    J'espère que je t'ai pas frustré aujourd'hui Merci

  6. #6
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    ton java te retourne un tableau d'objet, ces objets sont juste des strings?
    passe en mode pas à pas pour voir ce que te retourne ton remoteObject. place ton point d'arret sur le trace que j'ai ajouté ci dessous et explore ton objet etapeResult (redifinis le en Array).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private function resultHandler(event:ResultEvent):void
    {
        etapeResult = event.result as Array;
        trace(etapeResult.length);
    }

  7. #7
    Nouveau membre du Club Avatar de issamjet
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Merci Jim Nastiq

    Mon java maintenant me retourne un ArrayCollection de String
    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public ArrayCollection afficher_etape()throws Exception{		
    		//tab= null ;	
    			EtapeManagerImpl etapeManagerImpl = new EtapeManagerImpl() ;
    			List<Etape> l = etapeManagerImpl.getList(); 
    			ArrayCollection tab = new  ArrayCollection(); 
    		for(int i=0 ; i<l.size() ; i++) {
    			tab.add(l.get(i).getIdEtape()) ;
    			System.out.println(l.get(i).getIdEtape()) ;
    		}
    //		for(int i=0;i<l.size();i++){
    //			System.out.println(tab[i]) ;
    //		}
    		return tab ;
    	}
    Quand j'ai affiché la liste de String dans un DataGrid ou bien dans un ComboBox ouiiiiiii ça marche il y eeeeeeest


    voilà le code pour ceux qui sont interessés, j'ai essayé de laisser que l'essentiel
    bon c'est pas tout à fait, parcequ'il m'affiche que les id des etapes, voilà donc tout les champs de DataGrid contiennent que les id et le comboBox aussi
    je vais essayer pour tout afficher dans mon DataGrid, et je vais mettre le code parsuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    		<mx:Script>
    		<![CDATA[
    			import mx.collections.ArrayCollection;
    			import mx.rpc.events.FaultEvent;
    			import mx.rpc.events.ResultEvent;
    	[Bindable]
    	private var etapeResult:ArrayCollection = new ArrayCollection  ;
     
    	private function afficherEtape():void {
           ro.afficher_etape();
            etapeResult = ro.afficher_etape ;
      }
     
     private function resultHandler(event:ResultEvent):void
    {
    	listEtape.dataProvider    = event.result as ArrayCollection;
       	cmb.dataProvider = event.result as ArrayCollection ;
     
     
    }
    		]]>
    	</mx:Script>
    	<mx:RemoteObject id="ro" destination="service" result="resultHandler(event)"/>
    	<mx:Button x="42.5" y="202" label="Afficher les étapes" click="afficherEtape()"  width="218"/>
     
    	<mx:ComboBox id="cmb" x="531" y="67" width="248"  dataProvider="{etapeResult}"></mx:ComboBox>
    	<mx:Panel title="Product Catalog" x="470" y="136" width="309" height="325">
    <mx:DataGrid id="listEtape"  width="401" height="204">
    <mx:columns>
    <mx:Array>
    <mx:DataGridColumn  headerText="id_etape"  />
    <mx:DataGridColumn  headerText="nom" dataField="nom"/>
    <mx:DataGridColumn  headerText="table_name" dataField="tableName" />
    <mx:DataGridColumn  headerText="scenario_ref" dataField="scenario" />
    <mx:DataGridColumn  headerText="table_nom" dataField="tableNom"/>
    </mx:Array>
    </mx:columns>
    </mx:DataGrid>
    </mx:Panel>
    	<mx:Label x="42" y="277" id="etape"  width="218.5"/>
    </mx:Application>
    Si vous avez des questions je suis prêt pour vous aidez bien sûr si j'arrive à le faire

    Merci Jim Nastiq et Ellene vous êtes super tout les deux

  8. #8
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    Si tu as trouvé réponse à ton problème, pense au tag :

    Merci

  9. #9
    Nouveau membre du Club Avatar de issamjet
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2008
    Messages : 65
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Jim_Nastiq Voir le message
    Si tu as trouvé réponse à ton problème, pense au tag :

    Merci
    Je l'ai fait juste pour tes yeux

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut meme probleme
    bonjour je veux remplir une datagrid à partir d'une classe java qui retourne une liste ou (arraycollection) et j'obtiens l'erreur suivante

    faultCode:Server.Processing faultString:'org/jbpm/db/GraphSession' faultDetail:'null'

    sachant que quand j'exécute la classe java j'obtiens parfaitement ma liste
    et que avec ces méthodes flex j'ai pu me connecter sur une autre classe java qui me retourne un string
    sachant aussi que j'ai essayé les méthodes déjà publié sur ce forum sauf que j'obtiens même pas un message d'erreur

    voici
    le bout de code:
    <mx:Script>
    <![CDATA[
    import mx.controls.List;
    import mx.collections.ArrayCollection;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.events.FaultEvent;


    private function DoCall2():void{
    ro.ProcessInstanceWhenSubmit();
    }

    private function onResult2(event : ResultEvent):void{
    datagrid.dataProvider = event.result as ArrayCollection
    }
    private function onFault2(event : FaultEvent):void{
    // Afficher le message d'erreur
    tareponse.text = event.fault.message;

    }

    ]]>
    </mx:Script>

    <mx:RemoteObject id="ro" destination="programmeDAO" result="onResult2(event)" fault ="onFault2(event)"/>

    <mx:Button label="Button2" id="b2" click="DoCall2()"/>
    <mxataGrid width="300" height="149" id="datagrid">

    </mxataGrid>
    <mx:TextArea x="80" y="223" id="tareponse" width="410" height="110"/>
    Merci

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Points : 1 710
    Points
    1 710
    Par défaut
    Salut,

    Alors tout d'abord je te conseille de créer une nouvelle discussion pour ton problème. Car cette discussion est taggée Résolue et on te répondra plus vite si tu ouvres un nouveau thread avec un titre clair.

    Ensuite ton problème ressemble à un NullPointerException côté Java, as tu essayé de débugger côté Java, de dérouler ton code pour voir comment ça se passe et si tu as des exceptions ?

    Tu pourras mettre tous ces détails dans le nouveau thread que tu auras ouvert . On te répondra plus vite et plus efficacement.

    ++

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/01/2012, 14h41
  2. [Débutant] récuperer données enregistrées dans un fichier TXT
    Par asous dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/11/2009, 12h06
  3. Récuperer donnée MySQL dans une cellule
    Par me-to-you93 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/02/2008, 12h58
  4. exporter données sql dans un fichier csv en java
    Par pinkemma dans le forum JDBC
    Réponses: 2
    Dernier message: 07/03/2007, 09h23
  5. Problème pour récuperer donnée dans un txt
    Par Maldus dans le forum Delphi
    Réponses: 4
    Dernier message: 15/10/2006, 21h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo