views:

1773

answers:

2

I want to submit the values of a flex form to a ColdFusion cfc.

If I have a flex form (see below) is the data in the form an object? Or do I have to create an object based on the id's in the form and then pass that new object to the coldfusion component?

<mx:Form x="10" y="10" width="790" id="myFrom" defaultButton="{createReport}">
    <mx:FormItem label="Resume Report Type:">
    <mx:RadioButtonGroup id="showtype"/>
    <mx:HBox>
     <mx:RadioButton groupName="showtype" id="NotUpdated" value="notupdated" label="Not Updated" width="100"  />
     <mx:RadioButton groupName="showtype" id="Updated" value="updated" label="Updated" width="75"  />
     <mx:RadioButton groupName="showtype" id="All" value="all" label="All" width="75"  />
    </mx:HBox>
    </mx:FormItem>
    <mx:FormItem label="User Organzation:">
     <mx:ComboBox dataProvider="{qOrganization}" labelField="UserOrganization" /> </mx:FormItem>

    <mx:FormItem label="Between the following dates:">
     <mx:HBox>
      <mx:DateField/>
      <mx:DateField left="10"/>
     </mx:HBox>
    </mx:FormItem>
    <mx:FormItem>

     <mx:Button label="Create Report" id="createReport"/>
    </mx:FormItem> 
    </mx:Form>
+1  A: 

There is no data bound to any of the controls in the form (except for the dataProvider for the ComboBox). If you want to extract the data from the form with minimal modifications, assign an "id" property to each control and the access them programmatically from ActionScript:

var obj : MyObject = new MyObject();
obj.beginDate = beginDate.selectedDate;
obj.endDate = endDate.selectedDate;
obj.organization = Organization(comboOrg.selectedItem);
// etc
cliff.meyers
+1  A: 

No, this isn't a collection or object for all the form variables (that would be too easy).

If that's what you want you can create a custom object like Big Red Dog described (brd6644). That's optional though; you don't need to create an object before you send it back. You could just pass each field as an argument referencing them by their Id. It really depends on preference and whether or not your CF services are OO-based.

You also have the option of creating a data model and sending that back to CF like so:

<!-- DATA MODEL -->
<mx:Model id="formModel">
 <form>
  <beginDate>{beginDate.selectedDate}</beginDate>
  <endDate>{endDate.selectedDate}</endDate>
  <organization>
   <name></name>
   <address></address>
  </organization>
 </form>
</mx:Model>

<!-- REMOTE OBJECT/SERVER SIDE FORM HANDLER -->
<mx:RemoteObject
 id="roSubmitForm"
 source="com.mycfc"
 destination="ColdFusion"
 showBusyCursor="true">

 <mx:method name="submitForm" result="onSubmit(event)">
  <mx:arguments>
   <form>
    <beginDate>{formModel.beginDate}</beginDate>
    <endDate>{formModel.endDate}</endDate>
    <organization>
     <name>formModel.organization.name</name>
     <address>formModel.organization.address</address>
    </organization>
   </form>
  </mx:arguments>
 </mx:method>
</mx:RemoteObject>

Here is more on Flex data models... I'm still not completely sold on their usefulness... but it's another option.

Adrocknaphobia