2

根据标题 - 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>
4

1 回答 1

0

从评论中推广

我认为错误消息Element FOO is undefined in APPLICATION是红鲱鱼。如果你调出一个未定义的结构变量,例如foo.bar错误信息将是Element BAR is undefined in FOO. 在您的情况下,它看起来像 Application 范围,但我认为并非如此。

与您的 Application.cfc 文件相关的 cfc 位于何处(在路径中)?请记住,ColdFusion 将在被调用模板的同一文件夹中查找 Application.cfc 文件,如果未找到,将开始查找目录树。如果您的 cfc 不在 Application.cfc 文件的层次结构中,那么它不会成为该应用程序的一部分,因为 ColdFusion 会看到它。以下是 Charlie Arehart 关于此功能的更多信息

您还可以使用未命名的应用程序。这是有关该功能的一些文档。不过,我不确定在这种情况下这对你有用。

于 2015-10-13T13:42:59.603 回答