为啥当我在 cfoutput 中调用函数时,ColdFusion 会添加空格?

Posted

技术标签:

【中文标题】为啥当我在 cfoutput 中调用函数时,ColdFusion 会添加空格?【英文标题】:Why is ColdFusion adding whitespace when I call a function in cfoutput?为什么当我在 cfoutput 中调用函数时,ColdFusion 会添加空格? 【发布时间】:2011-02-17 00:30:54 【问题描述】:

如果我在 ColdFusion 中做这样的事情:

<cfoutput>foo="#foo()#"</cfoutput>

生成的 html 前面有一个空格:

foo=" BAR"

但是,如果它不是函数调用,它可以正常工作,即:

<cfset fooOut=foo() />
<cfoutput>foo="#fooOut#"</cfoutput>

给出这个输出:

foo="BAR"

这个额外的空间是从哪里来的,我能做些什么吗?


编辑澄清一下,空格不在我的foo函数返回的值中:

<cffunction name="foo" access="public" returntype="string">
  <cfreturn "BAR" />
</cffunction>

但我也发现内置函数不会发生这种情况,即:

<cfoutput>"#UCase("bar")#"</cfoutput>

打印:

"BAR"

但是,如果我将函数的输出传递给内置函数,就会发生这种情况(这部分对我来说毫无意义)。即:

<cfoutput>"#UCase(foo())#"</cfoutput>

打印:

" BAR"

【问题讨论】:

这绝对是一个 hack,并没有回答您的问题,但是您是否尝试过使用 Trim() 函数删除空格? @dbyrne: 我试过了,但是 foo() 返回的值没有空格开头,所以 trim 什么都不做,然后 trim 的结果得到一个空格添加到它,就像 foo() 的结果 【参考方案1】:

确保将输出属性定义为 false。

<cfcomponent output="false">

  <cffunction name="foo" access="public" returntype="string" output="false">
    <cfreturn "BAR">
  </cffunction>

</cfcomponent>

或者,用cfscript风格做,不会引入多余的空格。

function foo()

  return "BAR";

【讨论】:

有谁知道为什么要添加空白字符?【参考方案2】:

看看这是否有帮助http://www.simonwhatley.co.uk/eliminating-whitespace-in-coldfusion

【讨论】:

以上是关于为啥当我在 cfoutput 中调用函数时,ColdFusion 会添加空格?的主要内容,如果未能解决你的问题,请参考以下文章