当我在cfoutput中调用函数时,为什么ColdFusion会添加空格符?
问题描述:
如果我做这样的事情在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"
答
请确保您有输出属性定义为假。
<cfcomponent output="false">
<cffunction name="foo" access="public" returntype="string" output="false">
<cfreturn "BAR">
</cffunction>
</cfcomponent>
或者,在cfscript样式中做,并且不会引入额外的空间。
function foo()
{
return "BAR";
}
这绝对是一个黑客,并没有回答你的问题,但你有没有尝试过使用Trim()函数来删除空白? – dbyrne 2010-05-07 21:41:02
@dbyrne:我试过了,但是由foo()返回的值没有空格开始,所以trim没有任何作用,然后trim的结果获得了一个空间,就像foo() – Kip 2010-05-07 21:42:59