升级到 ColdFusion 9 出现奇怪的 cfif 错误

发布于 2025-01-03 13:13:26 字数 892 浏览 0 评论 0 原文

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

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

错误发生在 线上

有什么想法吗?

I have a couple of places that have some code like this:

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

I get this error:

Complex object types cannot be converted to simple values.

None of these values in the cfif statement is a complex object.

This worked fine in ColdFusion 8. We just upgraded to ColdFusion 9...

The error occurs on the line with <cfif local eq "" ... >

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绮烟 2025-01-10 13:13:26


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

更新:根据注释,如果 LOCAL 是查询中列的名称,您可以使用 sql 别名为其指定另一个名称:

  SELECT Local AS LocalAlias FROM Table

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

   <cfif queryName.local ...>
<cfif local eq ""

It could be that LOCAL is now a system scope in CF9, like FORM, URL, etecetera. So CF complains when you try to perform a string comparison on it because it is a structure. If LOCAL 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:

  SELECT Local AS LocalAlias FROM Table

... or use a fully qualified variable name:

   <cfif queryName.local ...>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文