2009-10-08 18 views
0

我來評價我的CFM像這樣attributes.someParam不能ColdFusion的

<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

任何想法,爲什麼?

感謝

回答

1

在黑暗中拍攝:從CFC 內

有一個在CFMX有一個錯誤,如果你 進行CFMODULE調用模板(或 使用自定義標籤)該臨時使用的CALLER範圍爲 返回數據,該數據永遠不會是 可用於CFC功能。這是 錯誤51067,這是關係到 變量的作用域的錯誤,45138.

看在CFMX 6 docs on CFMODULE用戶評論。

+0

請原諒這個非常愚蠢的問題,但是cfmx的錯誤跟蹤器在哪裏? ...它似乎並沒有出現在我的谷歌查詢中。 –

+0

並且在http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html中搜索錯誤51067和45138不會檢索任何內容。 –

+0

看來,降壓跟蹤器可能已經在Macromedia to Adob​​e轉換的電流中丟失了。恐怕我也找不到它們。 : - \ – Tomalak

3

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

<cfset foo = myObject.getSomething() /> 

和getSomething返回一個空值或運行一個Java函數不返回任何東西,這將CF嗆就可以了。變量將被「定義」,或者應用程序似乎認爲,但嘗試訪問它將會引發錯誤。因此,請執行以下步驟追蹤並解決問題:

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

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

  3. 擺脫的評估,而是使用屬性[PARAM_NAME]

+0

是的,我會很好奇知道如果使用數組符號而不是evaulate即屬性[param_name]會發生什麼情況。 – Leigh

2

切你的問題,但Evaluate()是邪惡的,而在這種情況下不必要的惡。你可以代替寫這篇文章,它會更清晰,更安全,更快:

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

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

,我們有兩個集這些文件的部署和一個被更新,而另一個不是,因此是錯誤。

感謝您的幫助。