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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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
    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 Expert

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    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
    Membre confirmé 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
    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 Expert

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    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
    Membre confirmé 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
    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
    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);
    }

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

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