无论出于何种原因(对或错),我们都有一个函数声明,如:
<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建议的那样)我的案例的最佳解决方法吗?
答案 0 :(得分:4)
不,不要做我说的话。
如果你跟进我提出的the link to the bug(在我的回答中提到),Adobe的某个人澄清了正在发生的事情。它也会影响你的其他情况:
在CF 11中引入了一个新的应用程序设置: strictnumbervalidation =&#34; true | false&#34;默认情况下,这个值 设置为&#34; true&#34;,它引入了严格的数字验证。设置 这个值为&#34; false&#34;显式,将使验证行为 老路。