2015-01-07 4 views
6

Я хочу передать необязательный параметр массива функции. Если параметр не указан, массив должен быть пустым. Я попробовал следующее:Параметр Array, пустой по умолчанию

<cfargument name="time_blocks" type="array" required="false" default="[]"> 

Но я получаю следующее сообщение об ошибке:

invalid call of the function CreateRateBlock 
14th Argument (time_blocks) is of invalid type, can't cast String [] to a value of type [array] 

Я также попытался это:

<cfargument name="time_blocks" type="array" required="false" default=""> 

В этом случае ошибка почти то же самое:

invalid call of the function CreateRateBlock 
14th Argument (time_blocks) is of invalid type, can't cast String [] to a value of type [array] 

Я также попытался удалить атрибут по умолчанию, но в этом случае значение time_blocks равно null. Что я делаю неправильно?

+0

Вы пробовали использовать [] без кавычек? – Tropicalista

ответ

11

[] не работает, потому что это всего лишь строка из 2 символов "[]".

#[]# технически должен работать, но старый CF недостаточно умен. Поэтому использование:

<cfargument name="time_blocks" type="array" required="false" default="#arrayNew(1)#"> 
+1

'# [] #' работает на CF 9/Railo cflive.net 4. ' ' –

+1

Да Я не думаю, что это проблема с CF8, поэтому, если они не запускают CF8 и на самом деле * имеют * эту проблему, использование '# [] #' - лучший ответ, я думаю –

6

Изменить []#[]#. Вы в настоящее время пытаетесь дать ему буквальное значение "[]".