休息组件可以访问应用程序范围吗?

时间:2015-10-12 15:23:29

标签: rest coldfusion cfc taffy

根据标题 - ColdFusion中的休息组件可以访问Application范围吗?我的初步测试似乎表明它不能,但它肯定可以在Railo / Lucee中 - 所以我想知道我是否做错了什么?

当然可以说,没有CFC应该访问Application范围,因为它打破了封装,但我认为REST组件是少数需要这样做的实例之一。

奇怪的是,如果我尝试返回一个不存在的Application范围变量,我会收到我期待的消息:

Element FOO is undefined in APPLICATION.

然而,如果我尝试返回确实存在的Application范围变量,我会得到以下结果 - 建议Application范围在此上下文中不可用:

Variable APPLICATION is undefined.

此时,这个问题还是没有实际意义 - CF的REST实施非常繁琐,以至于我想要转移到Taffy - 但是Railo / Lucee的工作做得很好比较我只是不能忽视我搞砸了什么的可能性。

这里有一些测试代码,对于那些可能感兴趣的人:

<cfcomponent
    output      = "false"
    rest        = "true"
    restpath    = "/hello/"
    >

    <cffunction
        name            = "world"
        returntype      = "string"
        httpmethod      = "GET"
        access          = "remote" 
        >

        <cfreturn Application.Foo />

    </cffunction>   

</cfcomponent>

1 个答案:

答案 0 :(得分:0)

从评论中推广

我认为错误消息Element FOO is undefined in APPLICATION是一个红色的鲱鱼。如果调出未定义的结构变量,例如foo.bar,则错误消息将为Element BAR is undefined in FOO。在你的情况下,它看起来像应用程序范围,但我不认为它是真的。

cfc与Application.cfc文件相关的位置(在路径中)?请记住,ColdFusion将在被调用模板的同一文件夹中查找Application.cfc文件,如果找不到,将开始查找目录树。如果您的cfc不在Application.cfc文件的层次结构中,那么它将不会成为该应用程序的一部分,因为ColdFusion会看到它。 Here is some more information on this feature from Charlie Arehart

您还可以使用未命名的应用程序。 Here is some documentation on that functionality。在这种情况下,我不确定这对你有用。