Welcome!

Web 2.0 Authors: Elizabeth White, Carmen Gonzalez, Imran Akbar, Yeshim Deniz, Liz McMillan

Related Topics: Adobe Flex, ColdFusion, Web 2.0

Adobe Flex: Article

Passing Parameters to Flex That Works

How to pass parameters to a Flex 2 application using flashVars parameters

From Farata Systems Blog

Here's the assignment: write  a Flex application that can run against different servers (dev, uat, prod) without the need to recompile the SWF file. It does not take a rocket scientist to figure out that the URL of the server should be passed to SWF as a parameter, and we’ll do this by using a special variable flashVars in HTML wrapper. Flex documentation suggests to include flashVars parameters in the tags Object and Embed and read them using Application.application.parameters in AS3 code. At the time of this writing this does not work. But as the ancient saying goes, “Adobe closes one door but opens another”.  Let’s get familiar with Flex code:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
applicationComplete="initApp()">

<mx:Label text=
"Will run the app deployed at http://{serverURL}:{port}/MyGreatApp.html" />
<mx:Script>
<![CDATA[
[Bindable]
var serverURL:String;

[Bindable]
var port:String;

function initApp():void{
serverURL=Application.application.parameters.serverURL;
port=Application.application.parameters.port
}
]]>
</mx:Script>
</mx:Application>

The script portion of this code gets the values of  parameters serverURL and port (defined by us) using the Application object. We’ll add the values of these parameters to the HTML file as described below. These values are bound to the mxml label as a part of the text string.

If you’ll open generated HTML file, you’ll find the JavaScript function AC_FL_RunContent that includes flashVars parameters in a form of key-value pairs. For example, in my sample application it looks like this:

"flashvars",'historyUrl=history.htm%3F&lconid=' + lc_id +’’

Add our parameters serverURL and port to this string:

"flashvars",'serverURL=MyDevelopmentServer&port=8181&historyUrl=history.htm%3F&lconid=' + lc_id

Run the application, and it’ll display the URL of the server it connects to. If you’d like to test  your application  against QA server, just change the values of the flashVars parameters in the HTML file.



We have one last little wrinkle to iron out: if you’ll manually change the content of the generated HTML file, next time you clean the project in Flex Builder, its content will be overwritten and you’ll lose added flashVars parameters. Here’s a simple solution to this problem: instead of adding flashVars parameters to the generated HTML, add them to the file index.template.html from the html-template directory, which Flex Builder uses for generation of run and debug versions of HTML wrapper.

Of course, this little example does not connect to any server, but it gives you an idea how to pass the server URL (or any other value) as a parameter to Flash Player 9, and how to assemble the URL from a mix of text and bindings

More Stories By Yakov Fain

Yakov Fain is a co-founder of two software companies: Farata Systems and SuranceBay. He authored several technical books and lots of articles on software development. Yakov is Java Champion (https://java-champions.java.net). He leads leads Princeton Java Users Group. Two of Yakov's books will go in print this year: "Enterprise Web Development" (O'Reilly) and "Java For Kids" (No Starch Press).

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Add News 03/09/08 03:54:44 PM EDT

Passing parameters this way is quite simple. Thanks.