我需要讀取瀏覽器在調用Flex應用程序時顯示的URL,因爲我將在配置Cairngorm
遠程對象的mxml中引用它。從Cairngorm配置的ActionScript 3讀取服務器URL
我會達到的目標是自動配置Cairngorm
服務從環境到環境(dev,test,qa,prod),而無需在mxml或其他ActionScript中靜態設置值。由於Flex客戶端部署在Web應用程序的戰爭根目錄中,因此閱讀瀏覽器指向的位置就足夠了。
我寫了一個類,它是這樣做的:
public class ConfigServer {
public function ConfigServer() {
var loaderUrl:String = FlexGlobals.topLevelApplication.loaderInfo.loaderURL;
var urlToSet:String = <loaderURL-string-manipulation>;
_serverUrl = urlToSet;
}
private var _serverUrl:String = '';
public function get serverUrl():String
{
return _serverUrl;
}
}
在我的MXML我會這樣做:
<mx:Script>
<![CDATA[
import org.fao.fapda.util.ConfigServer;
private var configuration:ConfigServer = new ConfigServer();
]]>
</mx:Script>
<mx:RemoteObject
id="userService"
destination="userService"
endpoint= "{configuration.serverUrl}/messagebroker/amf"
showBusyCursor="true"
requestTimeout="100"
/>
但每當我打電話ConfigServer
構造和每一個(在我的面前)我應用的技術(靜態或單身或公共等等),我總是有同樣的錯誤:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at org.fao.fapda.util::ConfigServer()[C:\dev\workspaces\FAPDA\trunk\FAPDA-client\src\org\fao\fapda\util\ConfigServer.as:8]
個
Cairngorm
服務初始化如下進行:
<fx:Declarations>
<cut/>
<services:FAPDAServices id="services"/>
<cut/>
</fx:Declarations>
,問題是,FAPDAServices.mxml
讀運行之前FlexGlobals
有效...
有Flex應用程序生命週期的一個點,這樣loaderURL
是定義以便我可以構造ConfigServer
?在啓動事件中初始化完成時?
我承認我是一個Flex史詩新手,所以這可能是我完全錯誤的。
問候