2010-05-07 2 views
14

Wenn ich so etwas wie dies in Coldfusion tun:Warum fügt ColdFusion Whitespace hinzu, wenn ich eine Funktion in cfoutput aufruft?

<cfoutput>foo="#foo()#"</cfoutput> 

Der resultierende HTML einen Raum vor ihm hat:

foo=" BAR" 

Wenn es jedoch keine Funktion ist es nennen funktioniert gut, das heißt :

<cfset fooOut=foo() /> 
<cfoutput>foo="#fooOut#"</cfoutput> 

diesen Ausgang Gibt:

foo="BAR" 

Woher kommt dieser zusätzliche Raum und was kann ich dagegen tun?


bearbeiten Um zu klären, ist der Raum nicht im Wert von meiner foo Funktion zurückgegeben:

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

Aber ich habe auch festgestellt, dass dies nicht mit integrierten Funktionen geschieht , das heißt:

<cfoutput>"#UCase("bar")#"</cfoutput> 

Drucke:

"BAR" 

Es passiert jedoch, wenn ich die Ausgabe meiner Funktion an die eingebaute Funktion übergebe (dieser Teil ergibt für mich keinen Sinn). d.h .:

<cfoutput>"#UCase(foo())#"</cfoutput> 

Drucke:

" BAR" 
+0

Dies ist definitiv ein Hack und beantwortet Ihre Frage nicht, aber haben Sie versucht, die Trim() -Funktion zu verwenden, um das Leerzeichen zu entfernen? – dbyrne

+0

@dbyrne: Ich habe das versucht, aber der von foo() zurückgegebene Wert hat kein Leerzeichen, damit die Trimmung nichts tut, und dann wird dem Ergebnis der Trimmung ein Leerzeichen hinzugefügt, genauso wie das Ergebnis von foo() – Kip

Antwort

25

Sie Ausgangs Attribut als falsch definiert Stellen Sie sicher, hilft haben.

Oder tun Sie es in cfscript-Stil, und kein zusätzlicher Speicherplatz wird eingeführt.

+0

Das hat es behoben, danke! – Kip

+0

Gern geschehen. :) – Henry

+0

Weiß jemand, warum der Whitespace char hinzugefügt wird? – Leeish

Verwandte Themen