Пользовательский тег ColdFusion 9 добавляет пробелы в строки

Несмотря на подавление пробелов и обрезку переменной, ColdFusion 9 всегда добавляет пробелы с обеих сторон вывода переменной. Вот пример моего кода и вывода, который сводит меня с ума;

Это часть пользовательского тега:

    <cfprocessingdirective suppresswhitespace="Yes">
        <cfquery name="get_something" datasource="some_dsn">
        SELECT SOMETHING FROM SOME_TABLE WHERE SOME_VALUES = PARAMETERS
        </cfquery>
        <cfoutput>#Trim(get_something.something)#</cfoutput>
    </cfprocessingdirective>

после сброса этого значения с помощью

<cfdump var="#get_something.something#">

Я получаю точную строку, которая в db. Здесь нет пробелов с обеих сторон жала. Но когда я использую этот тег на других страницах, как показано ниже;

<cf_my_tag param=someparam param2=someotherparam> 

Я получаю строку с пробелами с обеих сторон.

Вот что происходит после того, как я использую:

(<cf_my_tag params>) = ( some string from db ) 

... и это то, что я хочу:

(some string from db) 

Поскольку я не могу манипулировать пользовательскими тегами там, где я их использую (например, обрезка или строковые процессы и т. д.), я думаю, что мне нужно что-то, что является частью пользовательского тега.

В чем может быть причина или что я должен сделать, чтобы избавиться от этих пробелов? Могут ли быть какие-то проблемы с конфигурацией в ColdFusion Server?

Спасибо вам всем!


person Said Bahadır Kaya    schedule 10.06.2013    source источник


Ответы (1)


Ваш заголовок вводит в заблуждение, так как он не имеет ничего общего с trim(), который отлично работает. Вы предполагаете, что этот код является виновником:

<cfoutput>#Trim(get_something.something)#</cfoutput>

Однако я думаю, что если вы измените его так:

<cfoutput>[#Trim(get_something.something)#]</cfoutput>

Вы не увидите неожиданных пробелов между квадратными скобками.

Затем в оставшейся части вашего вопроса вы продолжаете говорить, что это это, которое испускает посторонние пробелы:

<cf_my_tag param=someparam param2=someotherparam>

Таким образом, на самом деле вопрос заключается в том, что пользовательские теги испускают неожиданные пробелы, что, я боюсь, является чем-то, чем отличаются пользовательские теги.

Вы можете частично смягчить это, поместив весь свой код в файл тега в <cfsilent> тегов.

person Adam Cameron    schedule 10.06.2013
comment
Вы правы, я собираюсь отредактировать заголовок. Затем я попробую что-нибудь еще в своем файле тегов. - person Said Bahadır Kaya; 10.06.2013
comment
Итак, ваше предложение помогло мне решить проблему. Тем не менее, я не знаю, почему это происходит, но после того, как я изменил свой код на более простой способ и отделил ненужные части от файла тегов, это неожиданно решилось. Я думаю, что проблема возникает из текстового редактора на сервере, потому что это все еще происходит без уважительной причины в некоторых файлах, написанных в текстовом редакторе серверов. Может быть, он добавляет один пробел в физический файл, я не мог получить. Что ж, спасибо тебе. - person Said Bahadır Kaya; 10.06.2013