0

Mate フレームワーク上で Flex アプリケーションを開発しています。このアプリケーションでは、Web サービスを使用してデータを取得しています。
この Web サービスは修正場所の URL ではないため (顧客がインストールした場所によって異なります)、構成ファイルでこの URL を定義します。Flex アプリケーションが起動すると、最初にこの構成ファイルが読み取られます。次に、見つけた値を使用して Web サービスを初期化します。
しかし、現在、私はこれを行う方法がわかりません。

ここに私のEventMap.mxmlがあります

<EventMap>
<services:Services id="services" />

<EventHandlers type="{FlexEvent.PREINITIALIZE}">        
    <HTTPServiceInvoker instance="{services.configService}">
        <resultHandlers>
            <MethodInvoker generator="{ConfigManager}" method="loadFromXml" arguments="{resultObject}" />
        </resultHandlers>
        <faultHandlers>
            <InlineInvoker method="Alert.show" arguments="ERROR: Unable to load config.xml !" />
        </faultHandlers>            
    </HTTPServiceInvoker>

この部分では、ConfigManager が構成ファイルを解析し、webServiceWsdl というバインド可能なプロパティを初期化します。

ここに私のServices.mxmlがあります

<mx:Object>
<mx:Script>
<![CDATA[
    [Bindable] public var webservice:String;
]]>
</mx:Script>

<mx:HTTPService id="configService" url="config.xml" useProxy="false" />
<mx:WebService id="dataService" wsdl="{webservice}" useProxy="false"/>
</mx:Object>

この Web サービス プロパティを初期化するにはどうすればよいですか?

4

3 に答える 3

0

あなたはこれを使うことができます:

WebService.loadWSDL(runtimeWsdl) ;

ここruntimeWsdlで、は動的wsdl値を含むString型変数です。

于 2010-08-05T10:48:14.573 に答える
0

これが問題のものとどのように違うのかわかりません。1 つはバインド可能な文字列で、もう 1 つはバインド可能なオブジェクトです。

(上記の例で) Web サービスの wsdl パラメータに関連付けられたバインド可能な文字列が変更されると、Web サービスが更新されないことがわかりました。

そのため、文字列の値が最初から正しくない場合、Web サービスは wsdl の検索に失敗してエラーを発生させ、文字列の値が変更された場合でも、再試行することはありません。

プレストン

于 2010-04-05T15:35:58.090 に答える
0

シングルトン クラスを作成して構成オプションをカプセル化し、シングルトン インスタンスのプロパティをサービス定義にバインドします。私たちはこれをかなりやっています。

[Bindable]
class Config
{
    private static var instance:Config;

    public static function getInstance ():Config {
        if (!instance)
            instance = new Config();
        return instance;
    }

    public var WEBSERVICE:String = "default value";
}

Services.mxml で:

<mx:WebService id="dataService" wsdl="{Config.getInstance().WEBSERVICE}" useProxy="false"/>

明らかに、ファイルから構成をロードするときに構成インスタンスを更新する必要があります。

于 2010-03-17T08:50:45.077 に答える