Archief - xml data in Arraycollection problem [FLEX]

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

fotos

Legacy Member
Zit dus met een probleem in FLEX.
Ik heb een site (nog niet online), waarin ik berichten kan posten en op die berichten kunnen bezoekers een reactie posten.
Zoals een blog dus.

De werking is als volgt.
- de reactie wordt ingevoerd in een venster met naam en bericht
- deze wordt doorgestuurd naar een php die ze in een MySql database zet en die de berichten tabel ook update op de aantalreacties kolom

Dit werkt allemaal perfect alsk ik in de database kijk.

- voor ze op te vragen roep ik via een HTTPService object een php aan die de reacties ophaalt uit de database en in xml formaat zet als volgt.

<reacties>
<reactie>
<naam>Tom</naam>
<bericht>test</bericht>
</reactie>
</reacties>

Als ik de php in IE geef krijg ik de xml perfect terug.
De xml vang ik in Flex op als een ArrayCollection.

var data:ArrayCollection = event.result.reacties.reactie

Om de reacties weer te geven maak ik gebruik van een loop

for each (var o:Object in data) {

}


In FLEX werkt dit alles perfect buiten het feit dat als er slechts 1 reactie in staat, gelijk voorgaande xml, die ze niet wil tonen.
Als ik een Alert doe met de lengte van de AC geeft die niks, vanaf 2 of meerdere berichten werkt alles perfect en staat alles ook mooi in de lijst zoals het in de xml staat.

Heb al vanalles geprobeerd maar vind het gewoon een raar probleem, als er 1 object in staat moet die dat toch opvangen?

fotos

Legacy Member
Gisteren toch nog eens een Google zoekactie gestart naar het probleem en na een paar uur het antwoord toch gevonden.
Voor degene die het misschien interesseren.

Een ArrayCollection kan dus wel overweg met 1 object maar het probleem ligt dus bij FLEX.
Als een xml slechts 1 node bevat, vindt Flex het beter dit resultaat te behandelen als een ObjectProxy ipv een ArrayCollection. Staat heel slecht gedocumenteerd.

Een ArrayCollection kan geen ObjectProxy bevatten dus moet dit object in een array gestoken worden die gewrapped wordt in de ArrayCollection.

if (event.result.reacties.reactie is ObjectProxy) {
data = new ArrayCollection(ArrayUtil.toArray(event.result.reacties.reactie));
}
Dit wrappen gaat niet bij 2 of meerdere nodes als result, dan gaat Flex er automatisch vanuit dat het resultaat een ArrayCollection is.

Jo-z

Legacy Member
ik snap niet direct waarom je een httpservice gebruikt daarvoor.

een amfphp mapke zetten op je server. in de services je blogberichten ophalen van je database. dan in je flex app een service xml'ke zetten die ge linkt in de properties van de applicatie. en dan is het gewoon werken met een remoteobject om je gegevens op te halen.

fotos

Legacy Member
heb amfphp al geprobeerd maar installatie lukt niet bij mijn hosting
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan