Flex - Coldfusion

Pagina: 1
Acties:

  • quakerix
  • Registratie: Februari 2003
  • Laatst online: 28-03 23:49
Goedemiddag Tweakers,

Ben op dit moment erg "druk" bezig voor mijn stage met Macromedia Flex 1.5 en Coldfusion MX en heb diverse examples/tutorials bekeken. Helaas is deze community niet de grootste en vind je maar weinig example/tutorial websites. Als je er toevallig nog 1 heb, post hem.

Aan de hand van een tutorial op de Macromedia site heb een test applicatie gebouwd in Flex Builder die gebruik maakt van Coldfusion Components. Mijn Flex en Coldfusion server zijn 2 verschillende servers. Het example dat ik van macromedia download werkt prima. Dus de connectie tussen beide servers doet het.

Inmiddels heb ik al 1000x dingen geprobeerd en heb ik mijn test file even ingekort tot iets simpels.

Het volgende heb ik in elkaar gezet om te testen:

test.mxml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

<mx:WebService id="dbSvc" wsdl="http://devbak.studio124.lan/quakerix/test.cfc?wsdl" showBusyCursor="true">
    <mx:operation name="test"/>
</mx:WebService>

<mx:Script>
    function bla() { 
        var result:String = dbSvc.test.result();
        blaat.text = result;
    }
</mx:Script>

<mx:Button label="Login" click="bla();" width="150"/>
<mx:Label id="blaat" text=".."/>

</mx:Application>


test.cfc:
code:
1
2
3
4
5
6
7
8
<CFCOMPONENT>

    <CFFUNCTION NAME="test" RETURNTYPE="string" ACCESS="remote">
        <CFSET test = "blaaaaaa">
        <CFRETURN test>
    </CFFUNCTION>

</CFCOMPONENT>


Bij het klilkken op de button, word de text ".." vervangen door niets. Geen errors of wat dan ook. HOPELIJK kan iemand mij helpen want ik word beetje gek van zo iets simpels dat maar niet wilt werken. Ik heb 2 examples gevonden maar die zijn zoveel "groter" dat wat ik doe er niet in voorkomt.

En ohjah, coldfusion/flex community website's are welcome. Alvast bedankt, qX

  • whoami
  • Registratie: December 2000
  • Laatst online: 14-04 20:38
Dit hoort eerder thuis in Webdesign & Graphics.
p&w->w&g.

https://fgheysels.github.io/


  • quakerix
  • Registratie: Februari 2003
  • Laatst online: 28-03 23:49
Op dit moment heb ik een nieuw voorbeeld gevonden. Die returnt dan niet een string uit de CFC maar een array. Ik zie geen verschillen met mijn code (op array/string) na dan.

mxml file
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?xml version="1.0" encoding="utf-8"?>
<mx:Application initialize="svcCars.getAll()" themeColor="haloOrange" xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns:comp="*">

 <mx:Script>
 <![CDATA[
  private function make( item:Object ):String {
   return cmbManufacturer.selectedItem.name; 
  }
 ]]>
 </mx:Script>
 
 <mx:WebService wsdl="SelectorDelegate.cfc?WSDL" id="svcCars" showBusyCursor="true">
  <mx:operation name="getAll"/>
 </mx:WebService>
 <mx:Panel title="Vehicles" width="100%" height="100%">
      <mx:VDividedBox width="100%" height="100%">
        <mx:HDividedBox height="50%" width="100%">
          <mx:VBox width="50%" height="100%">
     <mx:HBox width="100%" verticalAlign="middle">
    <mx:Label text="Manufacturer:" />
    <mx:ComboBox id="cmbManufacturer" dataProvider="{svcCars.getAll.result}" labelField="name" width="100%" />
   </mx:HBox>
   <mx:DataGrid id="grdPhones" dataProvider="{cmbManufacturer.selectedItem.phones}" width="100%" height="100%">
    <mx:columns>
     <mx:Array>
      <mx:DataGridColumn headerText="Manufacturer" labelFunction="make" />
      <mx:DataGridColumn headerText="Model" columnName="name" />
     </mx:Array>
    </mx:columns>
   </mx:DataGrid>
    </mx:VBox>
        </mx:HDividedBox>
      </mx:VDividedBox>
    </mx:Panel>
</mx:Application>


cfc file
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<cfcomponent displayName="SelectorDelegate" hint="Delegate business logic for car selection">
 <cfset This.equipment = "http://www.flexauthority.com/Samples/webservice/EquipmentXML.xml" />
 
 <cffunction name="getAll" displayName="getAll" hint="Returns an array of structures representing manufacturers and their specific phones" access="remote" returnType="array" output="false">
  <cfhttp url="#This.equipment#" />

  <cfset doc = XMLParse( CFHTTP.FileContent ) />
  <cfset mans = XMLSearch( doc, "//Manufacturer" ) />

  <cfset list = ArrayNew( 1 ) />

  <cfloop index="sub" from="1" to="#ArrayLen( mans )#" step="1">
   <cfset object = StructNew() />  
   <cfset success = StructInsert( object, "name", mans[sub].XmlAttributes.name ) />     
  
   <cfset phones = XmlSearch( doc, "//Manufacturer[attribute::name='" & mans[sub].XmlAttributes.name & "']" ) />

   <cfset items = ArrayNew( 1 ) />

   <cfloop index="sub" from="1" to="#ArrayLen( phones[1].model )#" step="1">
    <cfset record = StructNew() />  
    <cfset success = StructInsert( record, "name", phones[1].model[sub].XmlAttributes.name ) />   
    <cfset success = StructInsert( record, "popular", phones[1].model[sub].XmlAttributes.popular ) />      
    
    <cfset success = ArrayAppend( items, record ) />   
   </cfloop>    

   <cfset success = StructInsert( object, "phones", items ) />           
   <cfset success = ArrayAppend( list, object ) />   
  </cfloop>    
  
  <cfreturn list />
 </cffunction>

</cfcomponent>


Deze komt hier: http://www.flexauthority.com/samplesIndex.cfm vandaan. XML file met data is niet nodig/belangrijk.

Aantal links voor mensen die ooit dit topic vinden en opzoek zijn naar goede cfc/flex sites:

http://www.cflex.net/
http://www.flexauthority.com
http://www.coenraets.com/index.jsp
http://www.forta.com/blog/index.cfm?mode=e&entry=1030
http://www.flexingcfmx.com
http://www.coenraets.com/

  • quakerix
  • Registratie: Februari 2003
  • Laatst online: 28-03 23:49
ik ben er nu achter gekomen dat het niet lukt met het returnen van "strings" in een CFC. Ik maakte zojuist een array aan met 1 txtje er in en dat werkte wel.

mxml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<mx:Application initialize="update()" xmlns:mx="http://www.macromedia.com/2003/mxml">

<mx:WebService id="dbSvc" wsdl="http://devbak.studio124.lan/quakerix/test3.cfc?wsdl" showBusyCursor="true">
    <mx:operation name="getArray"/>
</mx:WebService>

<mx:Script>
    function update() {
        dbSvc.getArray();
    }
</mx:Script>

<mx:ComboBox id="X" dataProvider="{dbSvc.getArray.result}" labelField="name" width="100%" />

</mx:Application>


cfc:
code:
1
2
3
4
5
6
7
<CFCOMPONENT>
<cffunction name="getArray" access="remote" returnType="array" output="false">
    <cfset test=ArrayNew(1)>    
    <cfset test[1]="testing">
    <cfreturn test />
 </cffunction>
</CFCOMPONENT>

  • quakerix
  • Registratie: Februari 2003
  • Laatst online: 28-03 23:49
Volgens een tuturial die ik las over webservices moet het ook mogelijk zijn "primitieve" types te kunnen returnen als ik het goed begrepen heb.

Tot nu toe lukt mij het alleen dus met een array. Maar wat mij niet lukt is iets met die array doen die uit het CFC komt in Flex.

Ik kan geen dingen als

code:
1
tmp = cfc.userlogin().result.length;


ik zoek dus een manier waarmee ik in FLEX die array kan uitlezen. Het feit dat hij in de combobox als dataprovider goed uit te lezen valt bewijst dat het "werkt".

Ik kan alleen NERGENS iets vinden hoe iemand die array op bijv. plek [1] iets kan uitlezen in Flex.

hopelijk, echt hopelijk weet er iemand hier iets over. Want ik heb de hulp echt nodig!

  • André
  • Registratie: Maart 2002
  • Laatst online: 14-04 13:30

André

Analytics dude

quakerix, over je TR: het heeft niets met design en graphics te maken maar hoort ondanks die naam toch in dit subforum ;)

Zie: HTML, CSS, JavaScript, Flash en Director? Kijk eerst hier!

  • quakerix
  • Registratie: Februari 2003
  • Laatst online: 28-03 23:49
André schreef op woensdag 25 januari 2006 @ 13:12:
quakerix, over je TR: het heeft niets met design en graphics te maken maar hoort ondanks die naam toch in dit subforum ;)

Zie: HTML, CSS, JavaScript, Flash en Director? Kijk eerst hier!
je zal ongetwijfeld gelijk hebben, al vind ik dit wel een leuk twijfelgeval. Aangezien het hier niet om flash gaat.

Maar de brug tussen Coldfusion(server-side-scripting) en Actionscript(client-side-scripting). Naar mijn mening klinkt dat meer als "Webscripting".

Maar ok, als er hopelijk maar iemand ooit antwoord geeft op mijn simpele/nederige vraag dan ben ik BLIJ !

Verwijderd

Ik vind dit ook een twijfelgeval. Zeker als je bedenkt dat we in P&W nog weleens Waldo Smeets tegenkomen. Ik verwacht dat hij hier wel een antwoord op zou kunnen hebben. Heb je het op de Flexcoders mailinglist geprobeerd? Daar zitten zeker weten meer Flex specialisten dan in W&G en P&W bij elkaar.

Verwijderd

En qua ColdFusion kan ik je alles vertellen, maar qua Flex niet :)

[ Voor 3% gewijzigd door Verwijderd op 25-01-2006 13:37 ]


Verwijderd

Hoi, mijn excuses: heb nu even niet de tijd er beter naar te kijken om een heel voorbeeld te geven.

a) Arrays of Strings maakt niet uit, CF-Flex uitwisseling van die data gaat perfect

b) ik zie nergens dat je gebruik maakt van WebService.method.send(). Wel gebruik je webservice.method.result() maar dat is een object, geen method. Vreemd dat je hier geen compiler error over krijgt.

code:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml">

<mx:WebService id="dbSvc" wsdl="http://devbak.studio124.lan/quakerix/test.cfc?wsdl" showBusyCursor="true">
    <mx:operation name="test" />
</mx:WebService>

<mx:Button label="Login" click="dbSvc.test.send();" width="150"/>
<mx:Label id="blaat" text="{dbSvc.test.result;}"/>

</mx:Application>


Iets in de trend van onder staande code moet beter werken (snel geedit dus niet getest). Ipv DataBinding kan je ook een resulthandler plaatsen op de operation en dan een functie definieren die blaat.text zet.

Tip: gebruik ook de Netwerk Monitor en de Debugger om de juiste debug informatie te krijgen.

Maandag avond ben ik weer terug online, zal dan nog even terugkomen hiero.
Pagina: 1