Sorry for not responding sooner... Binding has some "smarts" that are getting in your way here. Essentially the first time binding looks at a value it checks to see if the value is null, undefined, or empty string. If it is any of those it will not copy the value over. Until the value has turned into something that is not one of those "non-values" it binding does not execute. The reason we do this is that many times there is to allow the destination of a binding to have an initial value that does not disappear until a real replacement is ready. For example, if we did not do this logic and you used binding from a web service to populate an image source, rather than the image not loading until the web service had returned, you'd see the "image not found" icon.
So, this is why you have no values. And it's also why the test where you try to return '' isn't working, the '' is empty-string which means "don't copy." So what I'd do as a quick workaround is go ahead and simply write an initialize handler that sets all of the web service request properties to null. <mx:Script> function initWS() { wsCustomer.methCustMatches.request.txtZip = null; wsCustomer.methCustMatches.request.txtLastLastName = null; wsCustomer.methCustMatches.request.txtFirstName = null; ... } </mx:Script> Sorry for the confusion, Matt -----Original Message----- From: hecubus_eh To: flexcoders@yahoogroups.com Sent: 3/30/2005 9:12 PM Subject: [flexcoders] Help with binding null data to web service parameters. I'm building a simple Flex form that has several TextInput fields that a person can use as search criteria. They are basically optional fields. The text from the TextInput fields are bound directly to a set of web service request parameters that is sending to a CFC-based WSDL. The problem I'm running into is that if any of the TextInput fields are not filled in by the user, no value is being passed to the web service request parameters that the TextInput.text values are bound to. The result is that they are treated as null by the WebService and the parameters are not sent in the SOAP request. Since all parameters are required in a WSDL, the web service is resulting in a SOAP message that some parameters are not being passed into the request. Here is a code snippet: -------------------------------- <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml <http://www.macromedia.com/2003/mxml> " xmlns:r="view.*" pageTitle="Customer Search" initialize=""> <mx:WebService wsdl="http://localhost/Customer.cfc?wsdl <http://localhost/Customer.cfc?wsdl> " id="wsCustomer"> <mx:operation name="methCustMatches"> <mx:request> <txtZip>{txtZip.text}</txtZip> <txtLast>{txtLastName.text}</txtLast> <txtFirst>{txtFirstName.text}</txtFirst> <txtPhone>{txtPhone.text}</txtPhone> <txtCompany>{txtCompany.text}</txtCompany> <CustomerNumber>{CustomerNumber.text}</CustomerNumber> </mx:request> </mx:operation> </mx:WebService> <mx:Script> <![CDATA[ function sendReq(event) { wsCustomer.methCustMatches.send(); } ]]> </mx:Script> <mx:TextInput text="" id="numShipTo" width="100" maxChars="9" restrict="0-9" /> <mx:TextInput text="" id="txtPhone" width="100" enabled="false" maxChars="12" / > <mx:TextInput text="" enabled="false" id="txtCompany" width="100" /> <mx:TextInput text="" id="txtZip" width="50" maxChars="11" /> <mx:TextInput text="" id="txtFirstName" width="75" /> <mx:TextInput id="txtLastName" width="75" /> <mx:Button id="submitForm" label="Go" textAlign="center" click="sendReq(event);"/ > </mx:Application> -------------------------------- That's the first problem...is there a way to explicitly send the parameters that have no value, basically as if I did not bind any variables to the request parameters? If I send the request with no value inside the parameters (e.g. <txtPhone></txtPhone>), the parameters are sent in the SOAP request with no values, which is fine since the WSDL doesn't yell at me for not providing all the parameters. While debugging this problem, instead of binding the TextInput text value directly to the WebService request parameters, I bound the values to a data model and used the model as a value object. I then bound the properties of the object to the corresponding parameters in the WebService request. The same error resulted, BUT...I tried to use the following code to determine what the value of the TextInput.text was for each TextInput: -------------------------------- <mx:Model id="modelCS"> ... <txtCompany>{txtCompany.text == undefined ? 'foo': txtCompany.text}</txtCompany> ... </mx:Model> -------------------------------- I expected the value of modelCS.txtCompany to be 'foo', but I ended up with modelCS.txtCompany resulting in '', which incidentally the WebService recognized as an empty string. Strangely enough, if I used '' instead of 'foo' in my simple logic test inside the data model, it resulted in modelCS.txtCompany to be undefined. Does anyone have any idea what's happening here??? I'll be more than happy to go into any more detail if necessary. Thanks, Rick... Yahoo! Groups Sponsor ADVERTISEMENT <http://us.ard.yahoo.com/SIG=129n214b4/M=298184.6018725.7038619.3001176/ D=groups/S=1705007207:HM/EXP=1112332390/A=2593423/R=0/SIG=11el9gslf/*htt p://www.netflix.com/Default?mqso=60190075> click here <http://us.adserver.yahoo.com/l?M=298184.6018725.7038619.3001176/D=group s/S=:HM/A=2593423/rand=366044414> _____ Yahoo! Groups Links * To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <http://groups.yahoo.com/group/flexcoders/> * To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> * Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service <http://docs.yahoo.com/info/terms/> . Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/