У меня были самые трудные времена, когда я пытался разрешить самую странную ошибку, когда в цикле любого типа используются какие-либо условия.
Ошибка, которую я продолжаю получать: «Сложные типы объектов не могут быть преобразованы впростые ценности. "на строке, которая содержит <cfloop condition="true">
.Что еще смешнее, так это то, что <cfbreak>
не выходит из цикла.Я использовал отладчик в Eclipse, чтобы подтвердить, что этот код на самом деле выполняется.
Странно то, что иногда код зацикливается навсегда, хотя я знаю, что <cfbreak>
выполняется, а иногда выдает ошибки при первой итерации.
Я подтвердил, что эта проблема возникает и на двух других компьютерах.
До того, как все начинают волноваться о моем использовании всегда истинного условия, у меня было действительное условие: <cfloop condition="not done">
где сделано было логическое значение.Это вызвало ту же ошибку.
Я работаю над старым кодом, написанным кем-то другим, поэтому переписывание сейчас не вариант.
Я только что исправил ColdFusion 8.0.1 дляпоследний обновитель 4, чтобы увидеть, решит ли это проблему, но это не так.
Вот как по сути выглядит код:
<cfloop condition="true">
<cfif condition is true>
<cfbreak>
</cfif>
</cfloop>
Вот код, который действительно выполняется:
<cfset done = false />
<cfloop condition="true">
<cfscript>
try
{
lineitem.quantity = quantityRemaining;
quantityRemaining = 0;
arrayAppend( currentTub, lineitem );
currentCartItemCount = currentCartItemCount + lineitem.quantity;
currentTubItemCount = currentTubItemCount + lineitem.quantity;
}
catch(Any e){}
availableSpaceInCart = this.itemsPerCart - currentCartItemCount;
availableSpaceInTub = this.itemsPerTub - currentTubItemCount;
</cfscript>
<cfif quantityRemaining LTE 0>
<cfset done = true />
<cfbreak />
</cfif>
</cfloop>
ОБНОВЛЕНИЕ:
Хорошо, мы выяснили, в чем проблема.Вокруг этого цикла были обернуты два тега <CFOUTPUT>
, внешний тег <CFOUTPUT query='query_name' groupby='column_name'>
использовал сгенерированный запрос QueryNew()
, который по какой-то причине ColdFusion не понравился.Итак, мы решили эту проблему, и она разрешила нашу странную проблему.