Coldfusion Query 循环在 cf10 中工作,但在 9 中不起作用



为什么以下方法在CF10中有效,而在CF9中不起作用?

<cfset out="">
<cfif isQuery( arguments.values ) >
<cfloop query="#arguments.values#" >            
<cfset out = '#out#<option value="#value#">#label#</option>'>
</cfloop>
</cfif>

CF9 声明包含 cfloop 的行的"复杂对象类型不能转换为简单值"。我正在使用Coldbox框架,它的调试器信息显示arguments.values是一个带有标签和值列的查询。

在 CF10 之前,cfloop 的查询属性只能是一个字符串 - 查询的名称 - 而不是变量本身。

因此,当您放置#arguments.values#时,它会尝试将复杂的查询对象转换为字符串,以获取名称,这就是错误的来源。

它在 CF10 中工作,因为该属性已更新为也允许查询值。


旁注:

这行代码可以简化:

<cfset out = '#out#<option value="#value#">#label#</option>'>

自:

<cfset out &= '<option value="#value#">#label#</option>'>

此外,您很可能至少应该在标签上使用HtmlEditFormat*,也许还有值。

*(如果只需要在CF10+中工作,则encodeForHtml)

相关内容

最新更新