Почему 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";
}
Ответ 2
Посмотрите, поможет ли это http://www.simonwhatley.co.uk/eliminating-whitespace-in-coldfusion