为啥当我在 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 会添加空格?的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我单击基于导航的应用程序上的后退按钮时未调用 viewdidunload 函数

为啥当我在 mysql 中调用 STORED PROCEDURE 时 pdo->lastInsertId() 返回 0?

当我在 plotly 中使用 ggplotly 函数时,为啥文本注释会丢失?

在 Winform 中,为啥当我在一个数据源上调用 PropertyChanged 时所有绑定的属性都会更新?

为啥当我在其小部件中调用 Flutter 有状态小部件时,它没有改变另一个有状态小部件的状态

当我在 ngOnInit() 中使用 router.getCurrentNavigation() 时,它会给我类型错误,但是当我在构造函数中使用它时,它工作正常,为啥?