Published by

Il y a 15 ans -

Temps de lecture 1 minute

Flex et les ArrayCollection

Lors du développement d’une application, j’ai été confronté à un problème avec Flex 2. Lors de la récupération du résultat du HTTPService sous forme de données XML, celui-ci est casté en ArrayCollection, mais lorsque la réponse envoyée par le HTTPService ne contient qu’un seul élément et que vous voulez créer une liste de type ArrayCollection, l’erreur suivante apparaît :

« cannot convert mx.utils::ObjectProxy@36fbf81 to mx.collections.ArrayCollection »

Le problème réside dans le fait que le moteur Flash essaye de convertir du XML en objet, et lorsque celui-ci ne repère qu’un seul élément, il ne le convertit pas en ArrayCollection. En effet, il n’est pas possible de savoir si un noeud XML représente une liste composée d’un élément ou bien un simple objet.
Cependant, il existe une solution : il suffit de gérer le cas où il n’y a qu’un seul élément. Je vous l’accorde ce n’est pas très élégant, mais il faut passer par ce test :

resultList est de type ArrayCollection

//Ne contient aucun élément
if (httpService.lastResult.response.counts == null) {
	
	errortext.visible = true;

//Contient un seul élément
} else if (httpService.lastResult.response.counts is ObjectProxy) {

resultList = new ArrayCollection([httpService.lastResult.response.counts]);

//Contient n éléments
} else {

resultList = httpService.lastResult.response.counts as ArrayCollection;

}

Vous pouvez trouver plusieurs manières de résoudre ce problème sur d’autres sites. Néanmoins, celle-ci est peut-être la plus élégante (non vous ne rêvez pas). En espérant que cette solution permette de faire gagner du temps à d’autres personnes.

Enjoy !

Published by

Publié par Nicolas Jozwiak

Nicolas est delivery manager disposant de 12 ans d’expérience en conception et développement. Son parcours chez un éditeur avant son entrée chez Xebia lui a notamment permis de développer de solides compétences dans le domaine de la qualité et de l’industrialisation (tests, intégration continue, gestion de configuration, contrôle qualité). Bénéficiant d’une expérience très solide de mise en place des méthodes agiles et d’accompagnement d’équipes sur le terrain, il s’attache à mettre à profit quotidiennement son expérience qui est reconnue pour son approche pragmatique, proactive et pédagogique.

Commentaire

4 réponses pour " Flex et les ArrayCollection "

  1. Published by , Il y a 15 ans

    That’s so great! Really solved my problem! Thanks for the tip! See you!

  2. Published by , Il y a 15 ans

    Merci beaucoup pour le tuyau! C’était excactement ça mon problème.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.