User Guide

Storing Complex Data in a String 353
Storing Complex Data in a String
The following simple example uses WDDX to store complex data, a data structure
that contains arrays as a string in a Client variable. It uses the
cfdump tag to display
the contents of the structure before serialization and after deserialization. It uses the
HTMLEditFormat function in a cfoutput tag to display the contents of the Client
variable. The
HTMLEditFormat function is required to prevent the browser from
trying to interpret (and throwing away) the XML tags in the variable.
<!--- Enable client state management --->
<cfapplication name="relatives" clientmanagement="Yes">
<!--- Build a complex data structure --->
<cfscript>
relatives = structNew();
relatives.father = "Bob";
relatives.mother = "Mary";
relatives.sisters = arrayNew(1);
arrayAppend(relatives.sisters, "Joan");
relatives.brothers = arrayNew(1);
arrayAppend(relatives.brothers, "Tom");
arrayAppend(relatives.brothers, "Jesse");
</cfscript>
A dump of the original relatives structure:<br>
<br>
<cfdump var="#relatives#"><br>
<br>
<!--- Convert data structure to string form and save it in the
client scope --->
<cfwddx action="cfml2wddx" input="#relatives#"
output="Client.wddxRelatives">
The contents of the Client.wddxRelatives variable:<br>
<cfoutput>#HtmlEditFormat(Client.wddxRelatives)#</cfoutput><br>
<br>
<!--- Now read the data from client scope into a new structure --->
<cfwddx action="wddx2cfml" input="#Client.wddxRelatives#"
output="sameRelatives">
A dump of the sameRelatives structure <br>
generated from client.wddxRelatives<br>
<br>
<cfdump var="#sameRelatives#">