将列表传递给期望数字参数的函数时出错 - 在CF9中工作但在CF11中不工作

时间:2015-02-24 15:37:42

标签: coldfusion coldfusion-9 coldfusion-11

无论出于何种原因(对或错),我们都有一个函数声明,如:

<cffunction name="findaccount" access="public" returntype="struct">
    <cfargument name="roles" type="numeric" required="true" default="1">
    ...
</cffunction>

然后由

调用该函数
<cfinvoke method="findaccount" returnvariable="stAccountDetails">
    <cfinvokeargument name="roles" value="1,2">
</cfinvoke>

无论将列表传递给期望数字的函数的初衷是什么,这段代码已经在CF9中工作了很长时间。最近我们决定升级到CF11,代码抛出以下异常:

Detail: If the component name is specified as a type of this argument, it is possible that either a definition file for the component cannot be found or is not accessible. 
Message: The ROLES argument passed to the findaccount function is not of type numeric. 

搜索时,我发现了类似的问题here。我的问题是:考虑到有很多像这样的调用,正在考虑类型检查(就像Adam Cameron建议的那样)我的案例的最佳解决方法吗?

1 个答案:

答案 0 :(得分:4)

不,不要做我说的话。

如果你跟进我提出的the link to the bug(在我的回答中提到),Adobe的某个人澄清了正在发生的事情。它也会影响你的其他情况:

  

在CF 11中引入了一个新的应用程序设置:   strictnumbervalidation =&#34; true | false&#34;默认情况下,这个值   设置为&#34; true&#34;,它引入了严格的数字验证。设置   这个值为&#34; false&#34;显式,将使验证行为   老路。