Fusebox无法解析xml文件

时间:2011-05-08 11:48:47

标签: coldfusion application.cfc fusebox

目前,在application.cfc中,我扩展了Fusebox 5.5 Framework。 然后在下面的OnRequestStart方法中,我根据特定条件设置fusebox模式。

问题是有时候,无论我做出什么改变,fusebox xml文件都不会重新解析。如果我使用url变量强制重新分析fusebox.parse = true& fusebox.loadclean = true& fusebox.password = xxx,则文件再次解析。

这几乎就像Fusebox仍处于生产模式,即使我转储FUSEBOX_PARAMETERS.mode它说“开发 - 满载”

可能导致这种情况的原因是什么?在下面的代码中是否正确操作保险丝盒模式的方式,或者应该在其他地方进行这种设置(显然除了fusebox.xml)??

任何帮助都会很棒。 感谢

 <cffunction name="onRequestStart">
    <cfset variables.server_type = "Development" />

    <cfswitch expression="#variables.server_type#">
        <cfcase value="development">
            <cfset FUSEBOX_PARAMETERS.mode = "development-circuit-load" />
            <cfset FUSEBOX_PARAMETERS.debug = true />
            <cfset request.component_reload = true />
        </cfcase>
        <cfdefaultcase>
            <cfset FUSEBOX_PARAMETERS.mode = "production" />
            <cfset FUSEBOX_PARAMETERS.debug = false />
            <cfset request.component_reload = false />
        </cfdefaultcase>
    </cfswitch>
    <cfif (StructKeyExists(attributes, "fusebox.loadapp") AND attributes.fusebox.password EQ application.fusebox.password) OR FUSEBOX_PARAMETERS.mode NEQ application.fusebox.mode>
        <cfset this.onApplicationStart() />
    </cfif> 

    <cfset superReturn = super.onRequestStart(arguments.1) />
</cffunction>

1 个答案:

答案 0 :(得分:3)

请参阅FUSEBOX_PARAMETERS存储在application范围内,默认情况下它们包含在大容器application.fusebox中。调用super.onApplicationStart()时会填充Fusebox设置,因此在onRequestStart中修改它们没有意义。

我建议将cfswitch代码移动到定义应用程序设置的组件主体中。

onRequestStart中,您可以强制重启应用程序以重新读取设置,可能是这样的:

<cfif StructKeyExists(attributes, "fusebox.loadapp") AND attributes["fusebox.password"] EQ application.fusebox.password>
    <cfset this.onApplicationStart() /
</cfif>

请注意,fusebox.loadapp不是内置的Fusebox属性,它仅适用于您的应用,为方便起见,只需像其他人一样加上前缀。这样您就可以重读应用程序的单例。