按照標題 - 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文件夾,所以它可以將它與該應用程序相關聯,或者至少在該上下文中調用它,但可惜它似乎不是。 感謝您的建議! –