按照标题 - ColdFusion中可以有一个休息组件,访问Application
作用域?我最初的测试似乎表明它不能,但是它肯定可以在Railo/Lucee--所以我想知道如果我做错了什么?休息组件是否可以访问应用程序范围?
当然可以争辩说,没有CFC应该访问Application
范围,因为它打破了封装,但我认为REST组件是少数需要的实例之一。
什么似乎很奇怪的是,如果我试图返回Application
作用域不存在变数,我收到消息,我期望:
Element FOO is undefined in APPLICATION.
而如果我试图返回Application
作用域变量确实存在,我得到以下 - 这表明Application
范围是在这种情况下不可用:
Variable APPLICATION is undefined.
在这一点上,问题是发irly moot - 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>
我想错误消息'元素FOO在应用程序中是未定义的“是一个红色的鲱鱼。如果你调用一个未定义的变量,例如'foo.bar',错误信息将会是'Element BAR在FOO中未定义“。你的Application.cfc看起来像什么,并且是该应用程序的一部分(在路径中)? –
不够公平... 该路径可能是一个问题,它位于web根目录以外的所有其他CFC中,并且具有到它的映射。我现在无法访问回购协议,但听起来可能是问题所在。我没有意识到它必须在web根目录下,但是现在我想到了它我猜如果远程实例化的CFC知道它属于哪个应用程序? –
的确,这是问题所在。如果我把它放在webroot下,工作正常。我曾想过,因为我在Application.cfc中设置了REST文件夹,所以它可以将它与该应用程序相关联,或者至少在该上下文中调用它,但可惜它似乎不是。 感谢您的建议! –