Coldfusion Query 循环适用于 cf10 但不适用于 9

标签 coldfusion coldfusion-9 coldfusion-10

为什么以下内容在 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 * 至少在标签上,也许还有值(value)。

*(或 encodeForHtml 如果它只需要在 CF10+ 中工作)

关于Coldfusion Query 循环适用于 cf10 但不适用于 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982595/

相关文章:

coldfusion - ColdFusion jnbridge 许可证是否允许(命令行)使用 jnbproxy?

apache-flex - 如何在应用程序级别进行冷融合映射

html - 使用 ColdFusion 函数 XMLFormat() 时如何转义 HTML 字符实体?

coldfusion - 如何在 coldfusion 中将 TIF 图像转换为 PDF

ColdFusion 和尾随逗号

coldfusion - 在 Coldfusion 列表中使用多个字符作为分隔符

java - 未找到方法 - 将 GoCardless Java 库与 ColdFusion 结合使用

ssl - ColdFusion 10 HTTP SSL

正则表达式前缀环视在coldfusion 10中不起作用

coldfusion - 我可以在 JavaScript 中使用 ColdFusion 标签吗?