升级到 ColdFusion 9 出现奇怪的 cfif 错误
我有几个地方有这样的代码:
<cfinvoke component="#application.path#cfc/eval_faculty" method="getPresentations" returnvariable="presentations">
<cfinvokeargument name="id" value="#eval_id#">
<cfinvokeargument name="evalYear" value="#eval_semester#">
<cfinvokeargument name="department" value="#general.dept#">
</cfinvoke>
<cfset prescheck = 0>
<cfloop query="presentations">
<cfif local eq "" and regional eq "" and national eq "" and international eq "">
<cfset prescheck = prescheck+1>
</cfif>
</cfloop>
我收到此错误:
Complex object types cannot be converted to simple values.
cfif 语句中的这些值都不是复杂对象。
这在 ColdFusion 8 中工作得很好。我们刚刚升级到 ColdFusion 9...
错误发生在
线上
有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
LOCAL
现在可能是 CF9 中的系统范围,如FORM
、URL
等等。因此,当您尝试对其执行字符串比较时,CF 会抱怨,因为它是一个结构。如果LOCAL
表示旧代码中的简单变量,请尝试使用不同的变量名称。更新:根据注释,如果
LOCAL
是查询中列的名称,您可以使用 sql 别名为其指定另一个名称:... 或使用完全限定的变量名:
It could be that
LOCAL
is now a system scope in CF9, likeFORM
,URL
, etecetera. So CF complains when you try to perform a string comparison on it because it is a structure. IfLOCAL
represents a simple variable in your old code, try using a different variable name.Update: From the comments, if
LOCAL
is the name of a column in your query, you could either use a sql alias to give it another name:... or use a fully qualified variable name: