根据标题 - 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>
答案 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。在这种情况下,我不确定这对你有用。