2010-05-07 8 views
14

Si je fais quelque chose comme ça dans ColdFusion:Pourquoi ColdFusion ajoute-t-il des espaces lorsque j'appelle une fonction dans cfoutput?

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

Le code HTML résultant a un espace devant lui:

foo=" BAR" 

Cependant, si ce n'est pas une fonction appeler cela fonctionne très bien, à savoir :

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

donne cette sortie:

foo="BAR" 

D'où vient cet espace supplémentaire et y a-t-il quelque chose que je puisse faire à ce sujet?


Modifier Pour clarifier les choses, l'espace est pas dans la valeur retournée par ma fonction foo:

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

Mais j'ai aussi trouvé que cela ne se produit pas avec des fonctions intégrées , à savoir:

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

Prints:

"BAR" 

Cependant, il arrive que je passe la sortie de ma fonction à la fonction intégrée (cette partie n'a aucun sens pour moi). i.e. .:

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

Prints:

" BAR" 
+0

Ceci est définitivement un hack et ne répond pas à votre question, mais avez-vous essayé d'utiliser la fonction Trim() pour supprimer les espaces? – dbyrne

+0

@dbyrne: J'ai essayé ça, mais la valeur retournée par foo() n'a pas d'espace pour commencer, donc la garniture ne fait rien, et ensuite le résultat de trim reçoit un espace ajouté, tout comme le résultat de foo() – Kip

Répondre

25

Assurez-vous que vous avez attribut de sortie défini comme faux. Ou, faites-le dans le style cfscript, et aucun espace supplémentaire ne sera introduit.

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

Ça l'a arrangé, merci! – Kip

+0

de rien. :) – Henry

+0

Est-ce que quelqu'un sait pourquoi le caractère d'espace blanc est ajouté? – Leeish