BlazeDS et ArrayList d'objets personnalisés
Je suis en utilisant BlazeDS pour connect Flex avec Java. Je vais avoir de la difficulté à passer ArrayLists d'objets personnalisés à partir de Flex pour java.
J'ai deux objets, l'un s'appelle de la Catégorie, de l'autre Section. Une Catégorie a une liste de tableaux de la Section des objets. Je peux envoyer une liste de tableaux de la Catégorie des objets en arrière-et-vient entre Flex et Java, le problème est lorsque j'essaye d'accéder aux sections ArrayList d'une Catégorie d'objets qui ont été remis à la Java à partir de Flex, j'obtiens l'erreur suivante:
flex.messaging.MessageException: java.lang.ClassCastException : flex.messaging.io.amf.ASObject
Pour une raison que j'obtiens une liste de tableaux de ASObjects plutôt que de ma Section objets. J'ai essayé de regarder comment explicitement le type de tableaux dans actionscript, mais la seule chose que j'ai pu trouver à l'aide d'un objet Vectoriel, ce qui BlazeDS ne prend pas en charge. Est-il possible de transmettre une liste de tableaux de la Section des objets dans une liste de tableaux de la Catégorie des objets, ou dois-je trouver un autre moyen de contourner?
OriginalL'auteur KevMo | 2009-04-16
Vous devez vous connecter pour publier un commentaire.
L'une des plaintes les plus communes avec AS3 est l'absence de tableaux typés. ArrayLists ne contiennent des objets, vous devrez lancer le résultats vous-même.
Voici un exemple de Java et AS3 classe que j'aimerais passer autour.
En Java:
La classe de haut niveau:
Sections de la classe:
Catégorie de classe:
En AS3:
Vous pouvez en apprendre plus sur remoteObjects ici: L'Accès Aux Données
Merci pour l'exemple. C'est ce que mon code ressemble, le problème se pose lorsque je passe la liste de tableaux de la Catégorie des objets de java à actionscript, puis retour à java. J'ai demander à la classe de fonte d'exception sur la ligne suivante de code dans mon java: catégories.(1).getSections();
Pouvez-vous fournir les déclarations de variables? Je ne peux pas dire pourquoi cela provoquerait une erreur si vous ne me fournissent pas les types. Peut-être que vous n'avez pas à déclarer les génériques correctement?
Voici ma Catégorie de classe en AS3: mon paquet.package { import mx.les collections.Type arraycollection; [Bindable] [RemoteClass(alias="mon.package.Catégorie")] public class Catégorie { public Catégorie de fonction() { } ... public var sections:type arraycollection; } } Et de l'Article: mon paquet.package { import mx.les collections.Type arraycollection; [Bindable] [RemoteClass(alias="mon.package.L'article")] public class Article { public Section function() { } ... public var nom de section:String; } }
aïe, désolé pour la mise en forme 🙁
OriginalL'auteur CookieOfFortune
Flex a été fait en envoyant un flex.de messagerie.io.Objet de type arraycollection. Ci-dessous est le code afin de le convertir à une liste de tableaux de ma classe java:
OriginalL'auteur KevMo
la vraie réponse est que BlazeDS est stupide, et exige de la classe de référence à la carte de votre script actif objet en Java (même si il a juste correctement mappé exactement le même objet à partir de Java COMME). J'ai perdu pas mal de temps sur exactement le même problème aujourd'hui. J'ai eu tout à fait un peu semblable mappages et ils ont tous travaillé très bien, mais aujourd'hui, j'ai créé un nouveau, et il a commencé à me donner de classe cast exception.
trouvé une réponse ici: Lien
dans votre cas, la solution serait:
il y a peut être de meilleures options, mais j'ai eu assez pour aujourd'hui.
OriginalL'auteur Vladimir