passing parameters to CGI script using flex - actionscript-3

I am trying to pass three parameters (arg1, arg2 and arg3) to a CGI script but the following code is not working.
Can someone show me how to pass parameters to a CGI script using flex?
public function loadURL():void {
//frameBuffer.reloadFrame(frameBuffer.currentFrame);
var variables:URLVariables = new URLVariables("name=Franklin");
var request:URLRequest = new URLRequest();
request.url = "http://firefly.cs.missouri.edu/cgi-bin/main2.cgi?arg1=image.TIF&arg2=BranchPoints.txt&arg3=Medial.txt";
request.method = URLRequestMethod.POST;
request.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeHandler);
try
{
loader.load(request);
}
catch (error:Error)
{
trace("Unable to load URL");
}
function completeHandler(event:Event):void
{
trace(event.target.data.welcomeMessage);
}
//Alert.show("Hi");
}

Do it like this:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" minWidth="955" minHeight="600" creationComplete="init(event)">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
public function loadURL():void
{
var variables:URLVariables = new URLVariables();
variables.name = "Franklin";
variables.arg1 = "image.TIF";
variables.arg2 = "BranchPoints.txt";
variables.arg3 = "Medial.txt";
var request:URLRequest = new URLRequest("http://firefly.cs.missouri.edu/cgi-bin/main2.cgi");
request.method = "POST";
request.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, onError);
loader.load(request);
}
private function completeHandler(event:Event):void
{
trace(event.target.data.welcomeMessage);
}
private function onError(event:IOErrorEvent):void
{
trace("Fault!");
}
protected function init(event:FlexEvent):void
{
loadURL();
}
]]>
</mx:Script>
</mx:Application>
The script gave me back the following code:
<html><head><title>My First Script</title></head>
<body>
<p>Hello world!</p>
</body></html>image.TIFBranchPoints.txtMedial.txtimage.TIF BranchPoints.txt Medial.txt

Related

AIR app:How to load swf from server

My app structure is below:
(local)
Login.swf
(server)
Main.swf
assets1.swf
assets2.swf
Login.swf -> Main.swf (OK!)
Main.swf -> assets1&2.swf (fail!, downloaded but not trigger complete event)
-progress event: bytes:loaded==total
Why?
How can i load assets from server using Main.swf?
I found somebody say it is crossdomain problem...then how to solve?
var _loader:Loader = new Loader();
var context:LoaderContext = new LoaderContext();
context.allowCodeImport = true;
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete_handler);
_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loader_progress_handler);
_loader.loadBytes(_urlloader.data,context);
Thanks!
BE AWARE:
On mobile it only works on Android... iOS due to a security policy does not permit to load an swf inside another one.
Said that you can surerly load an SWF.
First of all we need to understand if you can download the SWF bytearray using the URLLoader.
if yes you can load the swf in a two step routine..
hope this help :)
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
showStatusBar="false"
creationComplete="downloadSwf()">
<fx:Script>
<![CDATA[
import mx.core.FlexGlobals;
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import mx.managers.SystemManager;
import spark.components.Application;
private function downloadSwf():void {
// load the file with URLLoader into a bytearray
sfwLoader.visible = false;
var loader:URLLoader = new URLLoader();
// binary format since it a SWF
loader.dataFormat=URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, onSWFLoaded);
loader.addEventListener(IOErrorEvent.IO_ERROR, cantConnect);
//load the file
loader.load(new URLRequest("url"));
}
private function cantConnect(e:IOErrorEvent):void
{
var loader:URLLoader=URLLoader(e.target);
loader.removeEventListener(Event.COMPLETE, onSWFLoaded);
loader.removeEventListener(IOErrorEvent.IO_ERROR, cantConnect);
// error handling
return;
}
private function onSWFLoaded(e:Event):void {
// remove the event
var loader:URLLoader=URLLoader(e.target);
loader.removeEventListener(Event.COMPLETE, onSWFLoaded);
loader.removeEventListener(IOErrorEvent.IO_ERROR, cantConnect);
// add an Application context and allow bytecode execution
var context:LoaderContext=new LoaderContext();
context.allowLoadBytesCodeExecution=true;
// set the new context on SWFLoader
sfwLoader.loaderContext = context;
sfwLoader.addEventListener(Event.COMPLETE, loadComplete);
// load the data from the bytearray
sfwLoader.load(loader.data);
}
// your load complete function
private function loadComplete(completeEvent:Event):void {
sfwLoader.removeEventListener(Event.COMPLETE, loadComplete);
var swfApplication:* = completeEvent.target.content;
var sysmgr:SystemManager = (swfApplication as SystemManager);
sysmgr.addEventListener(FlexEvent.APPLICATION_COMPLETE, swfAppComplete);
}
private function swfAppComplete(event:FlexEvent):void {
sfwLoader.visible = true;
var sysmgr:SystemManager = (event.currentTarget as SystemManager);
sysmgr.removeEventListener(FlexEvent.APPLICATION_COMPLETE, swfAppComplete);
var swfApp:Application = (sysmgr.application as Application);
if (!swfApp.hasOwnProperty("version")) {
return;
}
// version is a public property in the main of the loaded application
var verion:String = swfApp["version"];
swfApp.addEventListener(Event.CLOSE, appClose);
}
private function appClose(e:Event):void
{
sfwLoader.unloadAndStop(true);
NativeApplication.nativeApplication.exit();
}
private function closeApp(e:CloseEvent):void
{
try{
(FlexGlobals.topLevelApplication as WindowedApplication).close();
}
catch(e:Error){}
}
]]>
</fx:Script>
<mx:SWFLoader id="sfwLoader"
width="100%" visible="false"
height="100%"/>
</s:WindowedApplication>

Flex 4 - How to load XML file programmatically?

I have done my EmployeeDetails application using HTTPService. But I want to load my XML file programmatically. I tried it using URLLoader and URLRequest. But no luck. I couldn't done it.
Sample code using HTTPService:
<fx:Declarations>
<s:XMLListCollection id="employeeXMLList" filterFunction="xmlListCollectionFilterFun"/>
<s:HTTPService id="employeeService" url="http://localhost/demo/TextXmlFile.xml"
method="POST" result="employeeService_resultHandler(event)"
fault="employeeService_faultHandler(event)"
resultFormat="xml"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
protected function employeeService_resultHandler(event:ResultEvent):void
{
var xmlList:XMLList = XML(event.result).Employee;
employeeXMLList = new XMLListCollection(xmlList);
}
protected function employeeService_faultHandler(event:FaultEvent):void
{
spark.components.Alert.show(event.fault.faultString,"Fault Error Message");
}
]]>
</fx:Script>
It's working well.
Now I change this as follows:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:components="components.*"
minWidth="955" minHeight="600"
creationComplete="load()">
<fx:Script>
<![CDATA[
private var request:URLRequest = new URLRequest("http://localhost/demo/TextXmlFile.xml");
//request.contentType = "XML";
//request.method = URLRequestMethod.POST;
private var xmlData:XML;
private var loader:URLLoader = new URLLoader();
private function loadXML(event:Event):void
{
xmlData = new XML(event.target.date);
}
private function load():void
{
loader.addEventListener(Event.COMPLETE, loadXML);
loader.load(request);
}
]]>
</fx:Script>
And I don't know what I am done here. Anyone can tell me the correct way to do this? And Please give me some explanation for that?
My XML:
<?xml version="1.0" encoding="UTF-8"?>
<CompanyEmployees version="1">
<Employee>
<Name>John</Name>
<Id>234</Id>
<DOB>1990/04/02</DOB>
<Designation>Project manager</Designation>
<Department>Mobile</Department>
<DOJ>2008/04/11</DOJ>
<Experience>15</Experience>
<Mobile>9999999999</Mobile>
<Email>john.a#Sybrant.com</Email>
</Employee>
<Employee>
<Name>Adya</Name>
<Id>135</Id>
<DOB>1989/04/21</DOB>
<Designation>Software Engineer</Designation>
<Department>Flex</Department>
<DOJ>2009/05/15</DOJ>
<Experience>5</Experience>
<Mobile>76890678990</Mobile>
<Email>adya#Sybrant.com</Email>
</Employee>
</CompanyEmployees>
UPDATE
private var urlRequest:URLRequest;
urlRequest = new URLRequest("http://localhost/TextXmlFile.xml");
urlRequest.contentType = "XML";
urlRequest.method = URLRequestMethod.POST;
I am getting error like "Access of undefined property urlRequest."
It seems to be typo error.
private var request:URLRequest;
private var xmlData:XML;
private var loader:URLLoader = new URLLoader();
private function loadXML(event:Event):void
{
xmlData = new XML(event.target.data); //Note here data instead of date.
}
private function load():void
{
request = new URLRequest("http://localhost/demo/TextXmlFile.xml");
request.contentType = "XML";
request.method = URLRequestMethod.POST;
loader.addEventListener(Event.COMPLETE, loadXML);
loader.load(request);
}
Reason :
You can only do declare and initialize/instantiate object out side of functions.
Normally compiler expect out side of function should be variable declaration(protected/public/private). So we can't assign value of those at out of function like
request.contentType = "XML";
request.method = URLRequestMethod.POST;
This is exact place where function comes in. Sometime it is possible with static block if all neccessary function and variable should be static.
More details about AS3 Static Block https://www.google.co.in/search?q=static+block+in+as3
or Check out SO Can we use static initializers in a Flex Library?
Check docs: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html

Flash builder variable from xml

I would like to ask how to load variables from XML to flash builder. Is it possible? I think that I load variables, but my AS3 is done. I mean that variables from XML are loaded after doing script. Any idea how to do it? Thank for advices
Asumming that you will have this xml (this code works perfectly):
<root>
<child id="1">
<detail>
<detailchild description="detail 1 child"/>
<detailchild description="detail 2 child"/>
</detail>
</child>
OpenXml.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com
/flex/spark" firstView="views.OpenXmlHomeView" applicationDPI="160">
</s:ViewNavigatorApplication>
OpenXmlHomeView
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView" viewActivate="view_activateHandler()">
<fx:Script>
<![CDATA[
import mx.collections.XMLListCollection;
public function view_activateHandler():void{
//Open a XML file
var ldr:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("../source.xml");
ldr.addEventListener(Event.COMPLETE, onLoad);
ldr.load(request);
}
private function onLoad(e:Event):void
{
var arr:Array = new Array();
var ldr:URLLoader = URLLoader(e.target);
//XML was loaded then read
var myxml:XML = new XML(ldr.data);
var xmlList:XMLListCollection = new XMLListCollection(myxml.children());
//Loop over XML childs to load a Question Array
for each(var obj:Object in xmlList){
arr.push(obj.#id);
var xmlChildren:XMLList = obj.detail;
for each (var qt:Object in new XMLListCollection(xmlChildren.children())){
arr.push(qt.#description);
}
}
lbl.text = arr.toString();
}
]]>
</fx:Script>
<s:Label id="lbl" />
</s:View>
This code shows:
1, detail 1 child, detail 2 child
You can download this project here.
Note: This is a Flex Mobile project.
Sample XML (message.xml)
<?xml version="1.0" encoding="utf-8" ?>
<category>
<movie date = "13/07/31" genre = "Action">
<title>foo</title>
<rate>4.5</rate>
</movie>
</category>
How to parsing XML to variables?
try this:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class XML_Parsing_Tester extends Sprite
{
private var movieDate:String;
private var movieGenre:String;
private var movieTitle:String;
private var movieRate:Number;
public function XML_Parsing_Tester()
{
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("message.xml"));
loader.addEventListener(Event.COMPLETE, onLoaded);
}
private function onLoaded(e:Event):void
{
var xml:XML = new XML(e.target.data);
movieDate = xml.movie.#date;
movieGenre = xml.movie.#genre;
movieTitle = xml.movie.title;
movieRate = xml.movie.rate;
}
}
}

Flex Post to php page

I am trying to post some data from my flex app to a PHP script to be saved.
As a simple test i have made the php script like so
<?php
if ($_POST) {
$message = "Text:" . $_POST['Text'];
mail('vince#myemailaddress.com', 'POSTED!', $message);
} else {
mail('vince#myemailaddress.com', 'No Post Test', 'Testing..');
}
?>
If i hit the script in the browser i receive an email fine. But when i call my flex function i get nothing?
Am i doing it wrong?
private function onTextMessageRecv(event:AsyncDataEvent):void
{
var dialogID:String = event.data;
var strFrom:String = event.data2;
var strTime:String = event.data3;
var MessageStr:String = event.data4;
var variables:URLVariables = new URLVariables()
variables.From = strFrom;
variables.To = m_strUserDisplayName;
variables.Text = MessageStr;
saveIMdata( variables);
}
private function saveIMdata( variables:URLVariables):void
{
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Saving IM...");
var myData:URLRequest = new URLRequest("http://im.vlowe.co.uk/save.php")
myData.method = URLRequestMethod.POST
myData.data = variables
var loader:URLLoader = new URLLoader()
loader.dataFormat = URLLoaderDataFormat.VARIABLES
loader.load(myData)
}
I do see the Log entry for "Saving IM...", but no email?
Thanks for any help.
update:
Tried this.. but neither event seems to fire?
private function saveIMdata( variables:URLVariables):void
{
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Saving IM...");
var myData:URLRequest = new URLRequest("http://im.vlowe.co.uk/save.php");
myData.method = URLRequestMethod.POST;
myData.data = variables;
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, variables.Text);
var loader:URLLoader = new URLLoader();
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Loaded?...");
loader.addEventListener(Event.COMPLETE, onLoadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.load(myData);
}
private function onLoadComplete(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
trace(loader.data);
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Load completed");
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, loader.data.toString());
}
private function onLoadError(e:IOErrorEvent):void
{
trace(e.text);
LogAddItem( LOG_CATEGORY_MAIN_DEBUG, "Error " + e.text);
}
Update 2:
my crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="80,843,8080,8081,8082" secure="false"/>
</cross-domain-policy>
Sounds to me like a cross domain security issue.
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
[EDIT]
This doesn't exist http://im.vlowe.co.uk/crossdomain.xml
Your crossdomain.xml should look like this. Drop the doctype
<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
<allow-access-from domain="*.someDomain.com"/>
</cross-domain-policy>
Add error and complete handlers to your URLLoader and test if the php file is loaded at all :
loader.addEventListener(Event.COMPLETE, onLoadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
private function onLoadComplete(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
trace(loader.data);
}
private function onLoadError(e:IOErrorEvent):void
{
trace(e.text);
}
Echo something in your php file and you should see it in your onLoadComplete function.

ActionScript 3: Can not Find Uploaded Files

This is my first ActionScript 3 application. It is supposed to upload data to specific location, which should be the www root location - the location where upload.php resides.
After I run the ActionScript application, I can select the file and I can see that the data is being uploaded, but I can never find it.
Would you be so kind, please, and help me to understand what is going on, and how can I find the uploaded data? I checked both: temporary files location, and the target destination.
Here is the ActionScript code:
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.*;
import flash.text.*;
public class ch30ex2 extends Sprite {
protected var fileRef:FileReference;
protected var uploadButton:TestButton;
protected var tf:TextField;
protected const YOUR_UPLOAD_URL:String = "http://localhost/Saifa/www/upload.php";
public function ch30ex2() {
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.CANCEL, cancelHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
var btn:TestButton;
btn = new TestButton(100, 25, "Browse...");
btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
fileRef.browse();
});
btn.x = btn.y = 20;
addChild(btn);
uploadButton = btn = new TestButton(100, 25, "Upload");
btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
fileRef.upload(new URLRequest(YOUR_UPLOAD_URL));
});
btn.x = 20; btn.y = 55;
addChild(btn);
tf = new TextField();
tf.defaultTextFormat = new TextFormat("_sans", 11, 0);
tf.multiline = tf.wordWrap = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.width = 300; tf.x = 130; tf.y = 58;
addChild(tf);
cancelHandler(null);
}
protected function selectHandler(event:Event):void {
tf.text = fileRef.name;
uploadButton.mouseEnabled = uploadButton.tabEnabled = true;
uploadButton.alpha = 1;
}
protected function cancelHandler(event:Event):void {
tf.text = "";
uploadButton.mouseEnabled = uploadButton.tabEnabled = false;
uploadButton.alpha = 0.3;
}
protected function progressHandler(event:ProgressEvent):void {
tf.text = "Uploading " +
event.bytesLoaded + " / " + event.bytesTotal + "bytes ...";
}
protected function errorHandler(event:ErrorEvent):void {
tf.text = event.text;
}
protected function completeHandler(event:Event):void {
tf.text = "Upload complete!";
}
}
}
import flash.display.*;
import flash.text.*;
class TestButton extends Sprite {
public var label:TextField;
public function TestButton(w:Number, h:Number, labelText:String) {
graphics.lineStyle(0.5, 0, 0, true);
graphics.beginFill(0xa0a0a0);
graphics.drawRoundRect(0, 0, w, h, 8);
label = new TextField();
addChild(label);
label.defaultTextFormat = new TextFormat("_sans", 11, 0, true, false,
false, null, null, "center");
label.width = w;
label.height = h;
label.text = labelText;
label.y = (h - label.textHeight)/2 - 2;
buttonMode = true;
mouseChildren = false;
}
}
and here is the PHP code, which is supposed to copy the temporary uploaded file:
<?php
move_uploaded_file($_FILES[‘Filedata’][‘tmp_name’], ‘./‘.time().$_FILES[‘Filedata’][‘name’]);
?>
All the code is from ActionScript Bible book
I would kindly like to ask for the following:
What can be the possible sources of my problem?
Looks my code correct? It gets compiled by FlashBuilder without problems
How can I identify source of my issue?
If you would have an example of working ActionScript + PHP application, I would be happy to see it.
As I spend hours after hours trying various things and combinations, I hope somebody might have had similar problem. Thank you.
In your PHP statement, there's a weired quote ‘ instead of a simple quote '.
<?php
move_uploaded_file($_FILES['Filedata']['tmp_name'], './'.time().$_FILES['Filedata']['name']);
?>
I tried with this and it worked fine.
Also here's the MXML i used to test:
<?xml version="1.0" encoding="utf-8"?>
<s:Application
minHeight="600"
minWidth="955"
creationComplete="application1_creationCompleteHandler(event)"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import spark.components.Button;
import spark.components.Label;
protected function application1_creationCompleteHandler(event:FlexEvent):void {
ch30ex2();
}
protected var fileRef:FileReference;
protected var uploadButton:Button;
protected var tf:Label;
protected const YOUR_UPLOAD_URL:String = "http://127.0.0.1/test/test.php";
public function ch30ex2():void {
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.CANCEL, cancelHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
var btn:Button;
btn = new Button();
btn.label = "Browse...";
btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
fileRef.browse();
});
btn.x = btn.y = 20;
addElement(btn);
uploadButton = btn = new Button();
btn.label = "Upload";
btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
fileRef.upload(new URLRequest(YOUR_UPLOAD_URL));
});
btn.x = 20;
btn.y = 55;
addElement(btn);
tf = new Label();
tf.width = 300;
tf.x = 130;
tf.y = 58;
addElement(tf);
cancelHandler(null);
}
protected function selectHandler(event:Event):void {
tf.text = fileRef.name;
uploadButton.mouseEnabled = uploadButton.tabEnabled = true;
uploadButton.alpha = 1;
}
protected function cancelHandler(event:Event):void {
tf.text = "";
uploadButton.mouseEnabled = uploadButton.tabEnabled = false;
uploadButton.alpha = 0.3;
}
protected function progressHandler(event:ProgressEvent):void {
tf.text = "Uploading " + event.bytesLoaded + " / " + event.bytesTotal + "bytes ...";
}
protected function errorHandler(event:ErrorEvent):void {
tf.text = event.text;
}
protected function completeHandler(event:Event):void {
tf.text = "Upload complete!";
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Placer ici les éléments non visuels (services et objets de valeur, par exemple). -->
</fx:Declarations>
</s:Application>