Как я могу указать пустые критерии для cfsearch?

Я использую поиск cf (или, скорее, альтернативу Railo, основанную на скриптах), чтобы выполнить базовый поиск по ключевым словам, но я получаю сообщение об ошибке, когда критерии не введены.

То, что я хотел бы вернуть, - это пустой объект запроса. Это возможно?

введите здесь описание изображения

Я могу проверять длину строки и т. д., используя len(), но это будет означать, что я никогда не получу возвращенный объект запроса, чего мне и хотелось бы.

Я что-то упустил здесь?

Спасибо, Майки.


person Michael Giovanni Pumo    schedule 24.08.2013    source источник
comment
Вы можете создать пустой объект запроса с помощью QueryNew. Что вы пытаетесь сделать?   -  person Peter Boughton    schedule 25.08.2013
comment
Я использую ajax для получения запроса, структурированного в JSON. Поскольку запрос выполняется при нажатии клавиши, есть вероятность, что предоставленный аргумент пуст/пуст, что вызывает эту ошибку 500. Думаю, я мог бы сделать больше проверок в самом JS, но я всегда хотел бы максимально защитить его с предсказуемыми возвращаемыми данными. Тем не менее, сама ошибка кажется довольно странной - есть идеи, почему это происходит?   -  person Michael Giovanni Pumo    schedule 26.08.2013
comment
Выполните проверку длины в JS и не отправляйте запрос, если он не содержит (как минимум) 2 или более символов. Не просто отвечайте на ошибки CF пустыми результатами поиска — отображайте подходящее сообщение об ошибке.   -  person Peter Boughton    schedule 26.08.2013
comment
Почему возникает сама ошибка, объясняется чтением сообщения об ошибке, которое выглядит самоочевидным. (Если вы можете продемонстрировать, что сообщение об ошибке неверно, поднимите проблему в Jira.)   -  person Peter Boughton    schedule 26.08.2013
comment
Я понимаю, почему возникает ошибка, он не может обрабатывать пустые критерии, что очевидно. Но мне кажется странным, что он так себя ведет. Это все, что я утверждал.   -  person Michael Giovanni Pumo    schedule 26.08.2013


Ответы (1)


Как сказал Петр, все просто:

<cftry>
    <cfsearch attributes>
<cfcatch type="application">
    <cfset MyQuery = QueryNew('column1','column2','column3')>
</cfcatch>
</cftry>

OR

<cfif len( attributes.searchCriteria )>
    <cfsearch attributes>
<cfelse>
    <!--- return blank query object --->
</cfif>
person BKK    schedule 25.08.2013
comment
Я думал об этом, но это показалось немного... грязным. Я попробую, и, возможно, я преодолею себя :) спасибо. Есть идеи, почему он вообще возвращает ошибку? Можете ли вы не указать пустые критерии? Кажется немного странной ошибкой. - person Michael Giovanni Pumo; 26.08.2013
comment
Мне кажется совершенно правильным, вы ничего не ищете? По какому принципу ранжировать результаты? Более элегантным подходом было бы просто проверить len() переданного аргумента. - person BKK; 07.09.2013