Adobe Flex 3 ヘルプ

URL フラグメントを使用した要求データの受け渡し

Flex アプリケーションでは、URL を使用してアプリケーションに値を渡す方法がいくつかあります。クエリ文字列パラメータを flashVars 変数に変換したり、SWF ファイルの URL に追加したりできます(MyApp.swf?value1=x&value2=y など)。Flex アプリケーションが埋め込まれた HTML ラッパーで、この両方を行います。Flex アプリケーションでこれらの値にアクセスするには、Application.application.parameters オブジェクトを使用します。flashVars 変数を渡すことについて詳しくは、flashVars プロパティを使用した要求データの受け渡しを参照してください。

BrowserManager には、Flex アプリケーション内部で URL の値にアクセスするメソッドも用意されています。そのためには、ディープリンクで使用されている URL フラグメントにアクセスします。デフォルトでは、URL のシャープ記号(#)の後ろに任意の個数のストリングを追加できます。セミコロンで区切られた名前と値のペアとしてアクセスすることもできます。例えば、次のような URL の場合、フラグメントをオブジェクトに変換すると、firstName および lastName のそれぞれの値にアクセスできます。

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

これらのパラメータをオブジェクトに変換するには、URL を取得し、URLUtil クラスの stringToObject() メソッドを使用します。次に、新しいオブジェクトのプロパティとして firstName および lastName にアクセスします。

URL を「より URL らしく」するには、フラグメントをアンパサンド(&)で区切ります。stringToObject() メソッドを使用してフラグメントをオブジェクトに変換するときは、新しい区切り記号を指定します。

次の例では、フラグメントで firstName および lastName クエリ文字列パラメータの値を設定している URL を受け取ります。アンパサンドを区切り記号として指定します。

<?xml version="1.0" encoding="utf-8"?>
<!-- deeplinking/PassURLParamsAsFragments.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="vertical" 
    historyManagementEnabled="false" 
    creationComplete="init(event);"
>    
    <mx:Script>
    <![CDATA[
        import mx.managers.BrowserManager;
        import mx.managers.IBrowserManager;
        import mx.utils.URLUtil;

        private var bm:IBrowserManager;
        [Bindable]
        private var fName:String;
        [Bindable]
        private var lName:String;            

        private function init(e:Event):void {
            bm = BrowserManager.getInstance();                
            bm.init("", "Welcome!");

            /* The following code will parse a URL that passes firstName and lastName as
               query string parameters after the "#" sign; for example:
               http://www.mydomain.com/MyApp.html#firstName=Nick&lastName=Danger */
            var o:Object = URLUtil.stringToObject(bm.fragment, "&");                
            fName = o.firstName;
            lName = o.lastName;                
        }
    ]]>
    </mx:Script>
    
    <mx:Form>
        <mx:FormItem label="First name:">
            <mx:Label id="ti1" text="{fName}"/>
        </mx:FormItem>
        <mx:FormItem label="Last name:">
            <mx:Label id="ti2" text="{lName}"/>
        </mx:FormItem>
    </mx:Form>

</mx:Application>

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート