2010-05-07 24 views
14

如果我做这样的事情在ColdFusion中:当我在cfoutput中调用函数时,为什么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" 
+0

这绝对是一个黑客,并没有回答你的问题,但你有没有尝试过使用Trim()函数来删除空白? – dbyrne 2010-05-07 21:41:02

+0

@dbyrne:我试过了,但是由foo()返回的值没有空格开始,所以trim没有任何作用,然后trim的结果获得了一个空间,就像foo() – Kip 2010-05-07 21:42:59

回答

25

请确保您有输出属性定义为假。

<cfcomponent output="false"> 

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

</cfcomponent> 

或者,在cfscript样式中做,并且不会引入额外的空间。

function foo() 
{ 
    return "BAR"; 
} 
+0

修复它,谢谢! – Kip 2010-05-07 21:57:04

+0

不客气。 :) – Henry 2010-05-07 22:07:53

+0

有谁知道为什么要添加空白字符? – Leeish 2016-05-27 22:02:41

相关问题