与Railo4的字符串连接问题

时间:2013-07-20 03:02:16

标签: coldfusion coldfusion-10 railo fw1

我正在开发一个基于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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

狡猾,

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

HTH

格特弗兰兹 Railo ltd。

答案 1 :(得分:3)

Url是ColdFusion中的保留字,所以即使你在函数中对它进行变换,它仍然会获取url变量的实际结构。

以下是ColdFusion中reserved words的完整列表