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 :

Utilisation du remote object avec la notion d'héritage


Sujet :

Flex

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut Utilisation du remote object avec la notion d'héritage
    Bonjour,

    je me prend la tête depuis hier sur un problème de cast paraît-il...

    Je m'explique : j'ai une classe EllipseSymbol qui hérite de Symbol, lorsque je charge, via mon service, un Symbol et que ensuite je veux le "caster" en EllipseSymbol et l'affecter à une variable de ce même type rien ne se fait et je n'ai pas d'erreur... Alors que quand j'affiche une alerte du résultat, j'accède bien aux champs de l'objet.

    Voici le morceau de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private function onResultEllipseSymbol(event:ResultEvent):void
    {
    	Alert.show(event.result.pattern);
    	tmpEllipseSymbol = event.result as EllipseSymbol;
    }
    J'espère avoir été assez compréhensible

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    Bonjour,

    Le "as" ne renvoie pas d'erreur. Soit la variable peut être castée dans le type indiquée et l'instance est renvoyée, soit elle ne peut pas et la valeur nulle est renvoyée.

    Si tu caste un objet Symbol en EllipseSymbol il est normal d'obtenir une valeur nulle car ce n'est pas Symbol qui hérite de EllipseSymbol mais l'inverse.

  3. #3
    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
    + 1 avec jylaxx.
    Et puis il faudrait que tu aies la même hiérarchie (EllispeSymbol héritant de Symbol) côté Java et côté Flex.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Non le "as" ne renvoie pas d'erreur...

    En faite, je récupère bien un EllipseSymbol, le cast s'effectue juste sur le ResultHandler, autant pour moi.

    De plus, quand je balance la requête qui est loguée en BDD, elle me retourne bien le résultat voulu...

    J'ai pensé à un souci peut-être dans mes Objets mappés avec mes objets java.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    package beans
    {	
    	[Bindable]
        [RemoteClass(alias="com.model.EllipseSymbol")]
    	public class EllipseSymbol extends Symbol
    	{
    		public var pattern:String;
    		public var point:Point;
    	}
    }

  5. #5
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    Bonjour, j'ai pas bien saisi le probleme apparement c'est pas un probleme de Cast mais c'est plutot un probleme de serialisation / desirialisation
    assure toi que tes getter et setter coté Java sont bien définit, je vois aussi un objet Complexe (Point) assure toi que de se coté là tout est bien formaté et que les getter / setter sont bien ce que Flex attends de l'autre coté.

    Aussi, est ce que tu as mis en correspondance la class Symbol de Flex avec celle de Java? ça pourrai venir de la le probleme !!

    Bon courage

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Bonjour Samy,

    Oui je dis problème de cast car j'arrive à afficher l'event.result.monChamps mais lorsque je le cast, l'objet est vide et je n'ai pas d'erreur.

    J'ai vérifié tous les getters et setters, l'objet Point est également mappé côté as.

    Enfin, la classe Symbol de flex est bien mappée avec celle de Java.

    Merci pour toutes vos réponses...

  7. #7
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    je reprends mon poste j'ai pas vu la proprité pattern de la class,

    dsl !!!

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    En effet, pattern est un champs de ma classe EllipseSymbol, l'alert que j'affiche est pour tester que le résultat retourne bien l'élément souhaité.


    alors pourquoi ca serai pas ca

    Code :

    tmpEllipseSymbol = event.result.pattern as EllipseSymbol;
    Car je veux récupérer l'objet EllipseSymbol, et non pas le pattern qui est de type String.

    tmpEllipseSymbol est déclaré comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private var tmpEllipseSymbol:EllipseSymbol = new EllipseSymbol;
    Encore merci.

  9. #9
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    Dsl

    sinon est que tu peux poster les trace debug sur la variable event que tu recoi

    Merci

  10. #10
    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
    Lorsque tu fais l'affectation ton objet tmpEllipseSymbol reste null c'est ça ?
    Si c'est le cas vérifie bien que ton RemoteClass pointe sur le bon objet.
    Pardon d'insiter mais on ne sait jamais et je ne vois que ça.
    Et puis essaie quelque part de faire une affectation bidon du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private function onResultEllipseSymbol(event:ResultEvent):void
    {
            var ellipse:Ellipse = new Ellipse();
    	Alert.show(event.result.pattern);
    	tmpEllipseSymbol = event.result as EllipseSymbol;
    }
    Il est possible que Flex Builder n'ait pas compilé ta classe. Cela arrive de temps en temps si tu l'utilises nul part ailleurs.
    Bonne chance

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Lorsque tu fais l'affectation ton objet tmpEllipseSymbol reste null c'est ça ?
    Oui ou du moins ça plante mais je n'ai pas d'erreur...

    Si c'est le cas vérifie bien que ton RemoteClass pointe sur le bon objet.
    Pardon d'insiter mais on ne sait jamais et je ne vois que ça.
    J'ai vérifié plus d'une fois mais le chemin est bon, et j'ai d'autres RemoteClass qui utilise la mm arbo donc ça devrait être bon.

    J'ai essayé l'affectation bidon mais rien n'y fait et puis de toute manière lors de la création de ma variable je l'a fait déjà une fois...

    Désolé, c'est pas tip top d'avoir l'impression d'être un boulet mais je séche vraiment là !

    Merci quand mm Ellene !

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    sinon est que tu peux poster les trace debug sur la variable event que tu recoi
    Désolé je ne me sers pas des traces mais j'affiche des alerts... Tu veux vérifier l'intégrité du résultat retourné dans l'eventResult ?

  13. #13
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    En faite, je veux juste voir si Flex Cast deja la varibale evet.result en EllipseSymbol ou bien il te la remonte comme un objet de Base si c'est le cas ça voudrai dire qu'il n'a pas réussit à la caster, sinon tu devrai voir affciher ta classe EllipseSymbol,

    Autre chose lors du renvoie depuis le serveur (JAVA ..??) tu envoie bien ta variable sous la forme EllipseSymbol ???

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Points : 894
    Points
    894
    Par défaut
    event.result.toString() affiche quoi ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    event.result.toString() affiche quoi ?
    Ça m'affiche :
    Autre chose lors du renvoie depuis le serveur (JAVA ..??) tu envoie bien ta variable sous la forme EllipseSymbol ???
    Oui, j'appelle un service qui retourne un objet de type EllipseSymbol.

    Habituellement je retourne une liste puis je la "cast" en ArrayCollection et là je n'ai pas de souci car il s'agit d'un type primitif...

    Mais là je ne sais pas si le problème vient du fait que j'ai là un héritage, ce qui rajoute de la complexité ou alors que j'utilise mal l'appel RPC...

  16. #16
    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
    Pourrais tu me dire ce test fonctionne stp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private function onResultEllipseSymbol(event:ResultEvent):void
    {
            var ellipse:Ellipse = new Ellipse();
    	Alert.show(event.result.pattern);
    	tmpEllipseSymbol = event.result as EllipseSymbol;
    }
    Ca peut paraître bizzare ce que je te demande mais il faut savoir que Flex fait des compilations paresseuses. Et il se pourrait qu'il juge que Ellipse n'est pas à compiler.

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private function onResultEllipseSymbol(event:ResultEvent):void
    {
            var ellipse:EllipseSymbol = new EllipseSymbol();
    	Alert.show(event.result.pattern);
    	tmpEllipseSymbol = event.result as EllipseSymbol;
    }
    plutôt ?

    Oui j'ai essayé... ça ne change rien non plus...

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    J'ai écrit une fonction toString() comme ceci :

    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 beans
    {	
    	[Bindable]
        [RemoteClass(alias="com.model.EllipseSymbol")]
    	public class EllipseSymbol extends Symbol
    	{
    		public var pattern:String;
    		public var point:Point;
     
     
    		public function toString():String
    		{
    			return "Mon pattern : " + pattern;
    		}
    	}
    }
    et il me renvoie : Mon pattern : null

  19. #19
    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
    plutôt ?
    Non je parlais bien t'instancier Ellipse puisque tu instancies déjà EllipseSymbol dans ton code.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Non je parlais bien t'instancier Ellipse puisque tu instancies déjà EllipseSymbol dans ton code.
    Euhh je n'ai pas d'objet Ellipse. J'ai un EllipseSymbol qui hérite de Symbol.

    Sinon en initialisant un Symbol avant ça ne marche pas non plus... :s

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/05/2015, 01h11
  2. Réponses: 2
    Dernier message: 12/08/2011, 18h58
  3. [FB4] Problème insert, delete, update avec Remote Object
    Par gui-yem dans le forum Flex
    Réponses: 16
    Dernier message: 11/04/2011, 21h59
  4. [HTML 4.0] Utilisation de la balise "object" avec IE 8
    Par tontonpschitt dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 05/07/2009, 22h05
  5. Réponses: 4
    Dernier message: 20/09/2008, 13h47

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