1

您好,提前感谢您提供的任何帮助。

我的 AIR 应用程序查询 Web 服务以查看要构建的组件。返回的 XML 示例如下:

<item>
 <type>EventList</type>
 <url><![CDATA[http://dashboard/cgi-bin/dataService.pl?type=ManagedEvents]]></url>
 <index>4</index>
 <title>Index 4 eventlist</title>
 <description>Application 4</description>
</item>

我正在尝试将存储在字段中的 URL 传递给 mxml 组件的 HTTPService,以便该组件可以检索一组数据。封闭的应用程序很好地解析了上述 XML,然后执行以下操作:

component.getData(url);

组件中的 getData 是:

public function getData(url:String):void {
    ws = url;
    dataService.send();
}

<mx:HTTPService 
        id="dataService"
        url="{ws}"
        resultFormat="e4x"
        result="resultsHandler(event);"
        fault="faultHandler(event);"
        useProxy="false"
    />

调用 send() 后,我收到以下错误:

[FaultEvent fault=[RPC Fault faultString="必须指定 URL,并将 useProxy 设置为 false。" faultCode="Client.URLRequired" faultDetail="null"] messageId=null type="fault" bubbles=false cancelable=true eventPhase=2]

关于我做错了什么的任何线索?(再次感谢您的帮助)

结核病

4

2 回答 2

2

这取决于您如何定义 ws 变量。它之前应该有一个 [Bindable] 元标记来指定它可以用于数据绑定。例如:

[Bindable]
public var ws:String;

当然你也可以直接设置 HTTPService 对象的 url,而不是使用数据绑定,像这样:

public function getData(url:String):void {
    dataService.url = url;
    dataService.send();
}

希望这可以帮助。

于 2009-08-22T20:50:06.007 回答
1

数据绑定通过事件系统异步工作,因此,在您更改可绑定变量后,绑定会发生一些未指定的时间。在您的情况下,当您调用 dataService.send() 时,ws 的更新事件尚未触发。这就是为什么直接更改 url 属性有效而绑定无效的原因。

如果您需要使用数据绑定,因为您的应用程序设计阻止您直接访问服务,我建议您使用您控制的 getter 和 setter 函数绑定到属性。

于 2009-08-25T16:52:20.450 回答