休息组件可以访问应用程序范围吗?
Can a rest component access the application scope?
根据标题 - ColdFusion 中的 rest 组件可以访问 Application
范围吗?我的初步测试似乎表明它不能,但是在 Railo/Lucee 中它肯定可以 - 所以我想知道我是否做错了什么?
当然可以说 CFC 不应该访问 Application
作用域,因为它破坏了封装,但我认为 REST 组件是少数需要这样做的实例之一。
奇怪的是,如果我尝试 return 一个不存在的 Application
作用域变量,我会收到我期望的消息:
Element FOO is undefined in APPLICATION.
而如果我尝试 return 一个 确实 存在的 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>
来自评论
我认为错误消息 Element FOO is undefined in APPLICATION
是转移注意力。如果调用未定义的结构变量,例如 foo.bar
,错误消息将是 Element BAR is undefined in FOO
。在您的情况下,它看起来像应用程序范围,但我认为它不是。
与您的 Application.cfc 文件相关的 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。不过,我不确定在这种情况下是否适合您。
根据标题 - ColdFusion 中的 rest 组件可以访问 Application
范围吗?我的初步测试似乎表明它不能,但是在 Railo/Lucee 中它肯定可以 - 所以我想知道我是否做错了什么?
当然可以说 CFC 不应该访问 Application
作用域,因为它破坏了封装,但我认为 REST 组件是少数需要这样做的实例之一。
奇怪的是,如果我尝试 return 一个不存在的 Application
作用域变量,我会收到我期望的消息:
Element FOO is undefined in APPLICATION.
而如果我尝试 return 一个 确实 存在的 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>
来自评论
我认为错误消息 Element FOO is undefined in APPLICATION
是转移注意力。如果调用未定义的结构变量,例如 foo.bar
,错误消息将是 Element BAR is undefined in FOO
。在您的情况下,它看起来像应用程序范围,但我认为它不是。
与您的 Application.cfc 文件相关的 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。不过,我不确定在这种情况下是否适合您。