我正在将应用程序从 ColdFusion 9 迁移到 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>
我继承了代码,我无法捍卫原始程序员以这种方式设置它的决定 - 但是,简而言之,它worked在 ColdFusion 9 中,它不起作用在 ColdFusion 11 中(返回数据类型错误)。我假设 ColdFusion 9 会自动转换false
to 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 中执行它时,它返回以下错误消息:
如果将组件名称指定为该参数的类型,则可能无法找到或无法访问该组件的定义文件。