【问题标题】:String concatenation issue with Railo4Railo4 的字符串连接问题
【发布时间】:2013-07-20 03:02:16
【问题描述】:

我正在开发基于 Railo4 构建的应用程序,但遇到了一个有趣的问题。就 ColdFusion 代码而言,我在这里没有做任何新的事情。只需获取一些字符串,在需要的地方连接,然后返回一个字符串。

<cffunction name="customBuildURL" access="public" returntype="string">

    <cfargument name="subsystem" type="string" required="true" />
    <cfargument name="section" type="string" required="true" />
    <cfargument name="item" type="string" required="true" />
    <cfargument name="args" type="string" required="true" />

    <cfset var url = "index.cfm?action=" & ARGUMENTS.subsystem & ":" & ARGUMENTS.section />

    <cfif Ucase(ARGUMENTS.item) NEQ "DEFAULT" >
        <cfset url &= "." & ARGUMENTS.item />
    </cfif>

    <cfif ARGUMENTS.args NEQ "" >
        <cfset url &= ARGUMENTS.args />
    </cfif>

    <cfreturn url />

</cffunction>

但是,我遇到了两个不寻常的错误。

1) 第一个是:Can't cast Complex Object Type Struct to String,正在报告以下两行:

<cfset url &= "." & ARGUMENTS.item />

<cfset url &= ARGUMENTS.args />

2) 第二个是 the function customBuildURL has an invalid return value , can't cast Object type [url] to a value of type [string] 在返回 url 变量时。

如您所见,我在这里没有做任何详细说明。只需设置一些字符串,连接它们然后返回它。我看不到在哪里创建了“对象”并将其转换为字符串。我仔细检查了&amp;= 运算符的使用,这似乎不是问题,因为如果我执行url = url &amp; "." &amp; ARGUMENTS.item,则会报告相同的错误。

有什么想法吗?

【问题讨论】:

  • 如果使用 url 以外的变量会发生什么?我假设它仍在拉入 url 结构
  • 解决了!我希望您将其发布为答案,我本可以为此归功于您。我盯着这个看了好几个小时,但没有意识到我犯了一个新手错误。 URL 范围与我的变量冲突!哦!无论如何,将url 变量更改为actionURL,现在一切正常!谢谢马特!有时,当您盯着它看太久时,您只需要一双额外的眼睛。
  • 没问题。我将此作为答案发布。

标签: coldfusion coldfusion-10 railo fw1


【解决方案1】:

狡猾,

Railo 不允许您将任何范围用作函数内部的变量。这是故意的不兼容,因为 Coldfusion 确实允许这样做。但是这样做之后,您将无法再访问 URL 范围。这就是为什么我们不允许这样做。 例如,只需调用变量 sUrl。

HTH

格特·弗兰兹 雷洛有限公司

【讨论】:

  • 顺便说一句:Gert 是 Railo 的首席执行官 (getrailo.com/index.cfm/about-us/railo-team/gert-franz)
  • 感谢格特的澄清!我很欣赏后续行动。这对我来说是一个愚蠢的错误。在我从事 CF 编程的所有日子里,我一直试图避免使用与作用域变量相同的变量名,但在这个例子中,我快速地制作了一些原型并做了我不应该做的事情。无论如何,感谢您的澄清。您的帮助非常有帮助,尤其是对我所属的组织而言。 ;)
【解决方案2】:

Url 是 ColdFusion 中的保留字,因此即使您在函数中对其进行 var-ing,它仍会获取 url 变量的实际结构。

这是 ColdFusion 中 reserved words 的完整列表

【讨论】:

  • Railo中的保留字和ACF一样吗?并不是在函数内部使用了var url
猜你喜欢
  • 2011-09-20
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多