Почему 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"

Ответы

Ответ 1

Убедитесь, что у вас есть выходной атрибут, определенный как false.

<cfcomponent output="false">

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

</cfcomponent>

Или, сделайте это в стиле cfscript, и никакое дополнительное пространство не будет представлено.

function foo()
{
  return "BAR";
}