升级到ColdFusion 9得到奇怪的cfif错误

时间:2012-02-07 19:21:39

标签: coldfusion coldfusion-9

我有几个地方有这样的代码:

<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 "" ... >

的行上

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

<cfif local eq ""

可能LOCAL现在是CF9中的系统范围,如FORMURL,etecetera。所以当你尝试对它进行字符串比较时,CF会抱怨,因为它是一个结构。如果LOCAL代表旧代码中的简单变量,请尝试使用其他变量名称。

更新:在评论中,如果LOCAL是查询中列的名称,则可以使用sql别名为其指定其他名称:

  SELECT Local AS LocalAlias FROM Table

...或使用完全限定的变量名称:

   <cfif queryName.local ...>