Plugins Grails可搜索插件,用于多个域类和多个搜索字段,只需一个提交按钮
我有多个域对象,有一对多、多对多的关系,搜索数据来自两个表,而且总是一样的。我在我的应用程序中实现了可搜索插件,当我有这样一个搜索字段时,我能够检索结果:Plugins Grails可搜索插件,用于多个域类和多个搜索字段,只需一个提交按钮,plugins,grails,searchable,Plugins,Grails,Searchable,我有多个域对象,有一对多、多对多的关系,搜索数据来自两个表,而且总是一样的。我在我的应用程序中实现了可搜索插件,当我有这样一个搜索字段时,我能够检索结果: <g:form url='[controller: "searchable", action: "searchContact"]' id="searchableForm" name="searchableForm" method="get"> <g:textField name="query" value="${pa
<g:form url='[controller: "searchable", action: "searchContact"]' id="searchableForm" name="searchableForm" method="get">
<g:textField name="query" value="${params.query}" size="40"/>
<input type="submit" value="Search Contact" />
</g:form>.
感谢您的快速建议。您可以在一个字符串查询中传递所有术语,每个标记/单词用空格分隔,因此,例如,如果您有两个域类,一个称为Person,另一个称为Job,并且您搜索“John”和“Engineer”,则字符串查询应为“John Engineer”这会让你们两个都得到域对象
这就是您要查找的内容吗?您可以在一个字符串查询中传递所有术语,每个标记/单词用空格分隔,因此,例如,如果您有两个域类,一个称为Person,另一个称为Job,并且您搜索“John”和“Engineer”,那么字符串查询应该是“John Engineer”这会让你们两个都得到域对象
这就是您要查找的吗?请参阅我上面的代码,我希望此块包含我在UI上输入的所有搜索参数,一个或几个。它必须有一个搜索按钮提交所有或一个搜索字段选择。当我将一个搜索参数包含在它的工作参数中时,它会很好地工作,但如果我添加更多,它会给出异常。任何想法。代码片段将帮助我更多地考虑3个域类,每个域的3个搜索参数和搜索闭包。获取每个值并使用Javascript或2在客户机上连接它们。将所有值放入表单中,并将它们发送到服务器,然后在您的操作中连接它们以形成查询值。你能给我一段基于我的原始问题中显示的我的action searchContact的代码吗。谢谢你的帮助。所有的值都会像现在的查询一样进入params对象,所以你可以从params对象(如params.value1)中获取它们,并将其连接到查询字符串对象。你能重构我的方法并发送吗。另一件事是我的搜索应该使用单个搜索参数或多个搜索参数的组合。请重构我的方法,如果你发现今天某个时候,参考我上面的代码,我希望这个块包括我在UI上输入的所有搜索参数,一个或几个。它必须有一个搜索按钮提交所有或一个搜索字段选择。当我将一个搜索参数包含在它的工作参数中时,它会很好地工作,但如果我添加更多,它会给出异常。任何想法。代码片段将帮助我更多地考虑3个域类,每个域的3个搜索参数和搜索闭包。获取每个值并使用Javascript或2在客户机上连接它们。将所有值放入表单中,并将它们发送到服务器,然后在您的操作中连接它们以形成查询值。你能给我一段基于我的原始问题中显示的我的action searchContact的代码吗。谢谢你的帮助。所有的值都会像现在的查询一样进入params对象,所以你可以从params对象(如params.value1)中获取它们,并将其连接到查询字符串对象。你能重构我的方法并发送吗。另一件事是我的搜索应该使用单个搜索参数或多个搜索参数的组合。如果你今天找到时间,请重构我的方法,
def searchContact = {
if (!params.query) {
return [:]
}
try {
String searchTerm = params.query
println searchTerm
return [searchResult: searchableService.search(searchTerm, params)]
} catch (SearchEngineQueryParseException ex) {
return [parseException: true]
}
}