【问题标题】:How can I supply an empty criteria for cfsearch?如何为 cfsearch 提供空标准?
【发布时间】:2013-08-27 16:42:24
【问题描述】:

我正在使用 cf 搜索(或者更确切地说是 Railo 中基于脚本的替代方法)进行基本的关键字搜索,但是当没有输入任何条件时出现错误。

我希望得到的是一个空的查询对象。这可能吗?

我可以使用 len() 检查字符串长度等,但这意味着我永远不会得到返回的查询对象,这正是我想要的。

我错过了什么吗?

谢谢, 米奇。

【问题讨论】:

  • 你可以用QueryNew创建一个空的查询对象——你想做什么?
  • 我正在使用 ajax 取回结构化为 JSON 的查询。因为请求是在键上发出的,所以提供的参数有可能是空白/空,这会导致这个 500 错误。我想我可以对 JS 本身进行更多检查,但我总是希望尽可能多地保护它,并返回可预测的数据。无论如何,错误本身似乎很奇怪 - 知道为什么会发生吗?
  • 在 JS 中做一个 len 检查并且不要发送请求,除非它(至少)2 个或更多字符长。不要只用空白的搜索结果来响应 CF 错误 - 显示合适的错误消息。
  • 错误本身发生的原因可以通过阅读错误消息来解释,这看起来是不言自明的。 (如果你能证明错误信息不正确,那么raise an issue in Jira。)
  • 我明白为什么会发生错误,它无法处理空标准,这很明显。但是,我觉得它会以这种方式表现很奇怪。这就是我所说的。

标签: coldfusion coldfusion-9 railo cfsearch


【解决方案1】:

正如彼得所说,简单到:

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

<cfif len( attributes.searchCriteria )>
    <cfsearch attributes>
<cfelse>
    <!--- return blank query object --->
</cfif>

【讨论】:

  • 我曾想过这样做,但它似乎有点……脏。不过我会试一试,也许我会克服自己:)谢谢。知道为什么它会返回错误吗? tou 可以不提供空白标准吗?似乎有点奇怪的错误。
  • 对我来说似乎完全有效,您正在搜索“无”吗?应该按什么对结果进行排名?更优雅的方法是只测试传入参数的 len()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 2019-12-05
  • 1970-01-01
相关资源
最近更新 更多