Обновлен до ColdFusion 9, получая странную ошибку cfif - PullRequest
2 голосов
/ 07 февраля 2012

У меня есть несколько мест, где есть такой код:

<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 Ответ

7 голосов
/ 07 февраля 2012
<cfif local eq ""

Возможно, LOCAL теперь является системной областью в CF9, например FORM, URL, etecetera. Поэтому CF жалуется, когда вы пытаетесь выполнить сравнение строк, потому что это структура. Если LOCAL представляет простую переменную в вашем старом коде, попробуйте использовать другое имя переменной.

Обновление : из комментариев, если LOCAL является именем столбца в вашем запросе, вы можете использовать псевдоним sql, чтобы присвоить ему другое имя:

  SELECT Local AS LocalAlias FROM Table

... или используйте полное имя переменной:

   <cfif queryName.local ...>
...