2013-05-05 34 views
0

我相信這肯定是一個簡單的參數,但沒有任何調整似乎工作(我希望我沒有誤解這裏的基本面!)。可選參數 - 傳遞的參數不是整數

我已經在CFC中定義的函數如下:

public void function createWidget( 
     required any event 
     , required String widgetType 
     , String elementId="" 
     , integer refreshRate="0" 
     , required integer rowNumber 
     , required integer colNumber 
     , required integer width 
     , required integer height 
     , String title="" 
     , String bgColour="orange"){ 

正如你所看到的,也有一些必需的參數,以及一些不需要的,我已經提供了一個默認值(例如integer refreshRate="0" )。

我現在用的命名參數調用此函數,試圖採取的可選參數的優勢,如:

createWidget(event:event 
       , widgetType:'blank' 
       , rowNumber:1 
       , colNumber:1 
       , width:2 
       , height:1 
       , title:'Empty Widget') 

所以我還沒有提供在這種情況下refreshRate任何價值,但我得到的錯誤:

The REFRESHRATE argument passed to the createWidget function is not of type integer. 

我自己也嘗試了refreshRate更新默認值刪除引號(integer refreshRate=0),但仍完全相同的問題。

任何人都可以發現我做錯了什麼嗎?


UPDATE
我也曾嘗試實際上傳遞變量的刷新率(添加refreshRate:0的函數調用),我仍然得到同樣的錯誤!

回答

2

好吧,顯然切換參數類型「numeric」修復了這一點 - 不知道爲什麼Integer不被接受?這是一個合法的CF類型嗎?

+10

不,只支持數字。 – Busches 2013-05-05 21:08:27

+5

詳細說明,大約有十四[內置參數類型](http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7e47.html)。所有其他值都被視爲組件的「名稱」。錯誤的真正含義是CF認爲'Integer'是一個組件的名稱並拒絕該參數,因爲它不是'Integer.cfc'的一個實例。 – Leigh 2013-05-06 16:35:10