我有几个地方有这样的代码:
<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 ......
错误发生在<cfif local eq "" ... >
有什么想法吗?
答案 0 :(得分:7)
<cfif local eq ""
可能LOCAL
现在是CF9中的系统范围,如FORM
,URL
,etecetera。所以当你尝试对它进行字符串比较时,CF会抱怨,因为它是一个结构。如果LOCAL
代表旧代码中的简单变量,请尝试使用其他变量名称。
更新:在评论中,如果LOCAL
是查询中列的名称,则可以使用sql别名为其指定其他名称:
SELECT Local AS LocalAlias FROM Table
...或使用完全限定的变量名称:
<cfif queryName.local ...>