2013-05-05 56 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