我有多个域对象,并且具有一对多,多对多关系,搜索数据来自几个表,并且总是相同的。我在我的应用程序中实现了Searchable插件,并且当我有这样的单个搜索字段时能够检索结果:
<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>.
但我有多个文本字段,复选框和g:选择框以获取searchTerm。基于任何一个字段或多个搜索选择,我必须获得搜索结果。如何在两者之间包含所有搜索字段,并为所有参数提供单个提交按钮。这是我的搜索操作代码:
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]
}
}
欢迎提出快速建议。
答案 0 :(得分:1)
您可以在一个字符串查询中传递所有术语,用空格分隔每个标记/单词,例如,如果您有两个Domain类,一个名为Person,另一个名为Job,您搜索“John”和“Engineer” ,你的String查询应该是“John Engineer”,它应该为你提供两个域对象。
这是你要找的那种吗?