我需要读取浏览器在调用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史诗新手,所以这可能是我完全错误的。
问候