ColdFusion 11 中的自动类型转换

2024-06-25

我正在将应用程序从 ColdFusion 9 迁移到 ColdFusion 11。

在现有代码中,有一个变量分配给false:

<cfset VARIABLES.roleTypeId = false >

然后,再往下,一个函数期望该变量是数字:

<cffunction name="rolesForStudy" >
    <cfargument name="id" hint="Study Id">
    <cfargument name="roleTypeId" default="#VARIABLES.roleTypeId#" type="numeric"/>
</cffunction>

我继承了代码,我无法捍卫原始程序员以这种方式设置它的决定 - 但是,简而言之,它worked在 ColdFusion 9 中,它不起作用在 ColdFusion 11 中(返回数据类型错误)。我假设 ColdFusion 9 会自动转换false to 0.

我的问题:是否可以在 ColdFusion 11 中更改配置设置,以使其像 ColdFusion 9 一样进行转换?或者我是否必须修复此代码以及整个应用程序中可能存在的许多其他类似示例?我和我们的 ColdFusion 管理员都无法在 ColdFusion 管理员界面、ColdFusion 文档或在线中找到有关此问题的任何信息。

在评论中编辑对亚当·卡梅伦的回应

我创建了一个包含以下 10 行(没有其他内容)的文件:

<cfset VARIABLES.roleTypeId = false >
<cfoutput>
<p>#rolesForStudy( 1, VARIABLES.roleTypeId )#</p>
</cfoutput>

<cffunction name="rolesForStudy" >
    <cfargument name="id" hint="Study Id">
    <cfargument name="roleTypeId" default="#VARIABLES.roleTypeId#" type="numeric"/>
    <cfreturn "It worked" >
</cffunction>

当我在 ColdFusion 9 中执行它时,它显示“它有效”字样。

当我在 ColdFusion 11 中执行它时,它返回以下错误消息:
如果将组件名称指定为该参数的类型,则可能无法找到或无法访问该组件的定义文件。


我相信你必须修复代码。没有任何设置(至少据我所知)可以改变 CF 处理布尔类型的方式。您应该能够将上面的分配从“false”更改为 0,并且您的功能代码将起作用。不过我怀疑在其他地方你可能会有类似的东西<cfif variables.roletypeID IS "False">然后它会被破坏,因为它实际上是在寻找一根绳子 - 其中also工程(公顷)。 CF 将无数值处理为布尔值(0 或非 0、真、假、是和否)是其起源的遗产。有时它很方便,但肯定会导致这样的事情。

同时我想知道这种行为的改变是一个新的错误还是一个旧错误的修复。在我看来,传递“false”作为参数并将其读取为数字似乎不一致,因此new这样做的方式对我来说似乎是正确的。然而,许多语言将 0 或非 0 视为 true 和 false 的默认值。

EDIT:

根据 Adam 下面的评论,我的代码示例有人会说:

<cfif somevar IS "false">

...即使 somevar 确实是数字也可以工作。他的例子(有用)是:

#0 is "False"#

...将输出“yes” - 因此 CF 正在将字符串“false”重新转换为零以进行比较。这使得我的例子不正确。

我相信我的答案仍然是正确的。他遇到的问题是传递给他的函数的参数 - 类型为“boolean”会引发错误,因为该函数需要一个数值。但是 Adam 的观点和例子让我认为这种行为可能是一个错误 - 因为看起来 CF 在检查类型之前没有转换为数字(它是did do根据 Joe 的说法,在 CF 9 中)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ColdFusion 11 中的自动类型转换 的相关文章

随机推荐

  • 如何更改 Maven 日志记录级别以仅显示警告和错误?

    我想阻止 Maven 显示信息消息 我只想看到警告和错误 如果有 我怎样才能实现这一点 最好是通过更改调用 Maven 的命令行 回答你的问题 我做了一个小调查 因为我也对解决方案感兴趣 Maven 命令行详细选项 根据http books
  • http:多余的response.WriteHeader调用

    我有一个HandleFunc 如果成功的话 我希望 显然 能够 sent a 200回复 在回复中写一条信息性消息 但是以下代码片段 在快乐路径中执行 if fullRun w Write byte successMsg w WriteHe
  • 帮助我改进更多 SSE2 代码

    我正在寻找一些帮助来改进 core2 cpu 上的双线性缩放 sse2 代码 在我的 Atom N270 和 i7 上 此代码比 mmx 代码快大约 2 倍 但在 core2 cpu 下它只等于 mmx 代码 代码如下 void Conve
  • 访问层次结构之外的顶级资源

    有没有一种方法可以在verilog中综合架构 以便深度嵌套的端点可以访问一些顶级引脚 来自 ucf 而无需通过层次结构的每个模块明确路由引脚 就我而言 我有一个带有深度嵌套端点的 PCIe 块 在端点处有一个地址解码器 需要从顶层引脚提供一
  • 调整FontSizeToFitWidth 与SizeToFit

    我在用着SizeToFit因为我不必指定Frame属性具有自适应大小UIButton UILabel 就我而言 它是工具栏上的一个按钮 现在我做了以下观察 如果我使用AdjustsFontSizeToFitWidth和 一起SizeToFi
  • 如何将 Excel Interop 与 ClosedXml 混合使用:样式

    我试图在 Excel VSTO 加载项中实现以下目标 从 Excel 文件的原始版本复制 应用单元格格式 原因 在处理 Excel 文件时 我们偶尔需要更改文件的样式 颜色 以便能够仅处理某些单元格 文件处理后 我们需要恢复原始的单元格格式
  • Android 复杂形状按钮

    你好安卓开发者 我的 UI 设计师想要一个复杂形状的按钮 但我不知道该怎么做 请帮助我 这就是她想要的设计image http img823 imageshack us img823 984 q43b png 有很多方法可以做到这一点 最简
  • 如何从hibernate会话获取jdbc连接? [复制]

    这个问题在这里已经有答案了 我想从hibernate会话获取jdbc连接 hibernate会话中有方法 即 session connection 但它已被弃用 我知道这仍然有效 但我不想使用已弃用的方法 因为我确信他们必须为此提供一些替代
  • 接口协方差问题

    以下代码示例 interface I
  • 设置删除标记时的缩放级别

    使用 javascript 谷歌地图 api 我目前已将其设置为删除制造商 当我添加像这样的位置时 我将其设置为 function addLocation map location var point new GLatLng locatio
  • 使用 PDO 扩展的execute(array())插入语句不起作用

    stmt conn gt prepare INSERT INTO user VALUES username md5 password 1 email 0 0 cover dateofbirthYear dateofbirthMonth da
  • 指向 lambda 的函数指针目标的生命周期是多少?

    抱歉 这是一个冗长的问题 但让我来分解一下 C 标准是否保证 void Ptr void return Ptr 仍将是定义的行为吗 我知道 对于闭包 它将被定义 因为该闭包对象是按值移动 复制的 但是 虽然我知道 常规 函数具有无限 无生命
  • 跨多个模块的 Python 日志记录

    我正在尝试将日志记录 到控制台而不是文件 添加到我已经工作了一段时间的代码中 阅读了一些内容后 我有一个我认为应该可行的模式 但我不太确定我哪里出错了 我有以下三个文件 显然是简化的 控制器 py import my module impo
  • 哪些工具向 Bugzilla 或 Mylyn 提供燃尽图? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我和我的团队需要使用 Mylyn 开发一个项目 该项目的错误已在 Bugzilla 中归档 您是否知道有
  • 有关 items_for_sale 随着时间的推移更新的数据库/架构设计问题

    我知道我的问题的明显答案是 这取决于 解决这个问题后 我希望你们中的一个 或多个 能够帮助我找到解决这个问题的常见方法 我正在设计一个待售小部件数据库 随着时间的推移 每件商品的价格将不可避免地发生变化 我的问题是我们是否应该跟踪这些变化
  • React - 防止标签切换时焦点脱离模式

    我自己构建了一个反应模式 当我在模式打开时按 Tab 键时 焦点仍然转到背景页面 如何将焦点限制在模态框内的组件内 下面的逻辑应该是什么 onKeyPress e if e keyCode 9 e preventDefault logic
  • AttributeError:使用 Flask 无模式登录时,模块“flask_login.login_manager”没有属性“user_loader”

    我有以下代码 我尝试使用 Flask 进行身份验证 from flask import Flask from flask login import LoginManager login manager from auth auth impo
  • Three.js:相机绕球体飞行?

    在 Three js 使用 JavaScript WebGL 中 如何创建一个以固定高度 固定前进速度和相对于球体的固定方向围绕球体飞行的相机 用户只能向左转向和正确的 想象一架飞机在一根看不见的绳子上飞向地球的中心 在地面附近飞行并且总是
  • UCanAccess:向现有表添加列

    我有一个正在运行的 Java 项目 它使用 Access accdb 数据库来存储数据 我正在对我的程序进行更新 以便为用户提供更多功能 为此 我需要向填充数据的现有表添加一列 当我研究时 我发现 UCanAccess 不支持 ALTER
  • ColdFusion 11 中的自动类型转换

    我正在将应用程序从 ColdFusion 9 迁移到 ColdFusion 11 在现有代码中 有一个变量分配给false