对于CFC中的cfscript函数,默认情况下输出= false吗?

时间:2009-06-10 20:39:09

标签: coldfusion cfc

我认为CFC中定义为cfscript函数的方法默认是output = false,但是当我在cfcexplorer.cfc中打开CFC(浏览器直接到CFC)时,它表示输出:启用。

cfcexplorer.cfc的Bug?

3 个答案:

答案 0 :(得分:17)

简短回答: 没关系。

cfscript除非您显式调用writeOutput(),否则不会输出任何内容。这包括cfscript中的函数以及函数外的任何cfscript代码。

这与CF标签的语法不同,默认情况下,它会在标签之间输出至少空格。在cfscript中,您编写的任何文本都将由CFML引擎编译。在CF标签中,您编写的任何文本都将写入输出缓冲区并发送到浏览器。

答案很长: 它与未指定输出属性相同。

cfscript块不输出任何内容。除非包含在cfsilent中,否则任何标记块都会输出空格,如果没有别的话。是的,即使是cffunction,但如果output属性设置为false,则会丢弃输出。

Peter Boughton的答案的本质是正确的。它既不包含在cfsilent也不包含cfoutput。输出不被禁止,但除非你明确地做,否则不会发生。

您始终可以将基于标记的cffunction与脚本结合使用,以充分利用这两个方面。有点像...

<cffunction name="x" output="false" access="package">
    <cfargument name="y" type="string" required="false" default="YY" />
    <cfscript>
        var someValue = y & "something";
        writeOutput("test"); // this will not be written
        return someValue;
    </cfscript>
</cffunction>

这允许您在cffunction标记上指定输出和访问权限,并允许参数是可选的(您无法通过cfscript函数执行),然后使用cfscript填充正文,包括var语句和函数return。

当然,对于该功能,如果您删除output属性或将其更改为true,则 输出“test”,然后再返回。

答案 1 :(得分:4)

cfscript函数是一个奇怪的猴子。他们都是两种。您不能指定它们是output =“false”,但它们直到您使用writeOutput(),但它们由cfcexplorer报告为output =“true”。这是一个奇怪的问题,我认为cfml咨询委员会现在正在研究。

答案 2 :(得分:1)

我不完全确定,但我的猜测是脚本功能在这方面与cffunction标签相同 - 默认情况下既不是true也不是false

output设置cffunction属性,以下是这种情况:

  • true相当于cfoutput中包含的函数。
  • false相当于cfsilent中包含的函数。
  • 保留默认值(未定义)相当于既不包含cfoutput也不包含cfsilent的标准代码。

但是,我几乎从不使用cfscript,实际情况可能并非如此 - 我们将不得不等待其他人出现并确认或更正此事。