あらゆる種類のループ内であらゆる種類の条件が使用された場合、私は最も奇妙なエラーを解決しようとするのに最も苦労してきました。
私が繰り返し発生するエラーは、「複雑なオブジェクトタイプを単純な値に変換できない」というものです。を含む行<cfloop condition="true">
。さらに面白いのは、a<cfbreak>
がループから抜け出さないことです。Eclipse内のデバッガーを使用して、このコードが実際に実行されていることを確認しました。
奇妙なことに、getが実行されることはわかっていても、コードが永久にループすることがあり<cfbreak>
、最初の反復でエラーが発生することもあります。
この問題は他の2台のコンピューターでも発生することを確認しました。
常に真の条件を使用することに誰もが気が狂う前に、私は有効な条件を持っていまし<cfloop condition="not done">
た。これにより、同じエラーが発生しました。
私は他の誰かによって書かれた古いコードに取り組んでいるので、現時点では書き直しはオプションではありません。
私はColdFusion8.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>
アップデート:
さて、私たちは問題が何であるかを理解しました。このループには2つの<CFOUTPUT>
タグがラップされていました。外側の<CFOUTPUT query='query_name' groupby='column_name'>
タグは、QueryNew()
ColdFusionが気に入らなかった何らかの理由で生成されたクエリを使用していました。そこで、その問題を解決し、奇妙な問題を解決しました。