Я проникаю приложение от ColdFusion 9 до 11. ColdFusionАвтоматическое преобразование типа в ColdFusion 11
В существующем коде есть присвоение переменной false
:
<cfset VARIABLES.roleTypeId = false >
А потом, дальше вниз, функции, ожидающей эта переменная будет числовым:
<cffunction name="rolesForStudy" >
<cfargument name="id" hint="Study Id">
<cfargument name="roleTypeId" default="#VARIABLES.roleTypeId#" type="numeric"/>
</cffunction>
Я унаследовал код, и я не могу защитить решение оригинального программатора установить это так, но, короче говоря, он работал в ColdFusion 9, и он не работает в ColdFusion 11 (возвращая ошибку типа данных). Я предполагаю, что ColdFusion 9 автоматически преобразовывал false
в 0
.
Мой вопрос: Есть ли параметр конфигурации, который я могу изменить в ColdFusion 11, чтобы сделать это преобразование, например ColdFusion 9? Или мне придется исправить этот код, а также, вероятно, множество других подобных примеров во всем приложении? Ни я, ни наш администратор ColdFusion не смогли найти какую-либо информацию об этом в интерфейсе администратора ColdFusion, документации ColdFusion или в Интернете.
Редактировать в ответ на Адама Камерона в комментариях
Я создал файл, который состоит из следующих 10 строк (и ничего больше):
<cfset VARIABLES.roleTypeId = false >
<cfoutput>
<p>#rolesForStudy(1, VARIABLES.roleTypeId)#</p>
</cfoutput>
<cffunction name="rolesForStudy" >
<cfargument name="id" hint="Study Id">
<cfargument name="roleTypeId" default="#VARIABLES.roleTypeId#" type="numeric"/>
<cfreturn "It worked" >
</cffunction>
Когда я исполню ее в ColdFusion 9 , он отображает слова «Это сработало».
, когда я исполню ее в ColdFusion 11, он возвращает следующее сообщение об ошибке:
Если имя компонента задается как тип этого аргумента, то возможно, что либо файл определения для компонента не может быть найден или недоступен.
Независимо от вашей проблемы, это не проблема приведения фальшивого числа в числовое значение (оно будет отлично отбрасываться до 0). Это поведение не изменилось в ColdFusion 11. Можете ли вы предоставить правильный пример воспроизведения, который демонстрирует то, что вы видите? Также укажите точную ошибку (скопируйте и вставьте с экрана). Также можете заплатить, чтобы прочитать следующее: http://blog.adamcameron.me/2013/09/short-self-contained-correct-compilable.html –
Holy f *** (просто запустил ваш обновленный код здесь. Я получаю то же самое WTF ?! Заглядывая в него) –