簡體   English   中英

attribute.someParam無法在Coldfusion中評估

[英]attributes.someParam cannot be evaluated in coldfusion

我在cfm中有這樣的內容

<CFModule name="MyModule"
    someParam_one="#something.one#"
    someParam_two="#something.two#"
    someParam_etc="etc_etc_etc"/>

在我的模塊中,我有一個

<CFSet param_name = "someParam_one">
...
evaluate("attributes." & param_name)

在我們大多數的服務器上,這項工作。 但是在我們的一台服務器上,我得到了一個

錯誤解析參數ATTRIBUTES.SOMEPARAM_NAME

有什么想法嗎?

謝謝

您是否已驗證someParam_one實際上正在創建? 例如,我發現如果我做這樣的事情:

<cfset foo = myObject.getSomething() />

並且getSomething返回一個void值或運行一個不返回任何內容的Java函數,CF會阻塞它。 該變量將是“定義的”,或者使應用程序似乎認為,但是嘗試訪問該變量將引發錯誤。 因此,請執行以下操作以查找並發現問題:

  1. 轉儲您的屬性范圍,以確保所需的確實存在。

  2. 在嘗試訪問變量之前,請運行StructKeyExists(Attributes,param_name)。

  3. 擺脫評估,而使用Attributes [param_name]

與您的問題相切,但Evaluate()是邪惡的,在這種情況下是不必要的邪惡。 您可以改為編寫此代碼,它將更加清晰,安全和快捷:

<cfset param_name = "someParam_one">
...
<cfset param_value = Attributes[param_name]>

盲目猜測:

CFMX中存在一個錯誤,即如果您從CFC中對模板進行CFMODULE調用(或使用自定義標簽),並且該模板使用CALLER范圍返回數據,則該數據將永遠無法用於CFC函數。 這是錯誤51067,它與VARIABLES范圍錯誤45138有關。

在CFMODULECFMX 6文檔中的用戶注釋中可以看到

好吧,我們做了一些非常愚蠢的事情:-)

我們部署了兩組這樣的文件,其中一組已更新,而另一組未更新,因此發生了錯誤。

感謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM