如何把request param data传给flex app

参考文档

1. 关于flex html template wrapper (以后的文章详细讲解): http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf663fe-7fff.html


2. Creating a wrapper: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ecf.html


3. 通过flashvar property来把request param data传给flexapp: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf626ae-7feb.html

 

4. Flex app直接从URL fragments获取:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7e9c.html

 

先看如何通过flashvarproperty来把requestparam data传给flexapp:

Step 1 create a flex project


Step 2 open /html-template/index.template.html file, and find following codes

             var flashvars ={};


Step 3 add following 2 line codes below it

            flashvars.firstname= "Nick";

            flashvars.lastname= "Danger";

如果是用JSP page,则可以为

            flashvars.firstname= "<%= request.getParameter("firstname")%>";

            flashvars.lastname= "<%= request.getParameter("lastname")%>";


还可以通过在swf的file path里添加param来代替上面这2行代码 (下面这种方式和上2行代码的作用一样!选择其中一种方式即可)

        <script type="text/javascript">
            var swfVersionStr = "0";
            var xiSwfUrlStr = "";
            var flashvars = {};
            var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            var attributes = {};
            attributes.id = "FlashVarTest";
            attributes.name = "FlashVarTest";
            attributes.align = "middle";
            swfobject.embedSWF(
                "FlashVarTest.swf?firstname=Nick&lastname=Danger",
                "flashContent", "100%", "100%",
                swfVersionStr, xiSwfUrlStr,
                flashvars, params, attributes);
        </script>


注意:flashVars properties的值必须是URL encoded, 而且该值所包含的参数之间用“&”来连接


Step 4 (optional) 在index.template.html里你还会看到flash object tag <object>在<noscript>file里,要使其使用flashvar,你的<object>应该添加flashvar param

   <object id='mySwf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' height='100%' width='100%'>

       <param name='src' value='FlashVarTest.swf'/>

        <param name='flashVars' value='firstname=Nick&lastname=Danger'/>

       .......

   </object>


Step 5 在flex app里如何获取flashvar传来的data

<s:Application ... creationComplete="initVars()">     
       <fx:Script><![CDATA[
          public var firstName:String;
          public var lastName:String;
           
          private function initVars():void {
               firstName = mx.core.FlexGlobals.topLevelApplication.parameters.firstname;
               lastName = mx.core.FlexGlobals.topLevelApplication.parameters.lastname;
          }
     ]]></fx:Script>
     
     .....       
</s:Application>


如果要获取flashvar里的所有params,那么使用下列代码

              for (var i:String in FlexGlobals.topLevelApplication.parameters) {
                    label1.text += i + ":" + FlexGlobals.topLevelApplication.parameters[i] + "\n";
              }


Step 6 run the flex app


再看如何直接在flex app里解析URL里的param:

Flex app通过BrowserManager and URLUtil来直接获取URL里的param

BrowserManager是一个Singleton管理器,用于充当浏览器和应用程序之间的代理。使用它可以访问浏览器地址栏中的URL,这与访问 JavaScript中的document.location属性类似。当url属性发生更改时调度这些事件。然后侦听器可以响应、更改该URL和/或阻止其它对象获取此事件。


注意:URL里的params是跟在"#"后面,而不是跟在"?"后面!!例如

          http://www.mydomain.com/MyApp.html#firstName=Nick&lastName=Danger


Flex app里直接获取URL的param的代码


import mx.managers.BrowserManager;
import mx.managers.IBrowserManager;
import mx.utils.URLUtil;
            
private function init():void {
    var bm:IBrowserManager = BrowserManager.getInstance();                
    bm.init("", "Welcome!");        

    //call URLUtil stringToObject method to convert parameters to an object, 第二个参数是param之间的分隔符
    //假设URL为http://xxx/MyApp.html#firstName=Nick&lastName=Danger,则分隔符为&

    var o:Object = URLUtil.stringToObject(bm.fragment, "&");   
 
    label1.text=o.firstName + " " + o.lastName;
}   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值