我一直在使用 Searchable 来搜索用户创建的联系人。到目前为止,它工作正常。现在我想实现过滤,比如搜索那些“买家”类型的联系人。为此,首先用户必须从选择框中选择“联系人类型”并按姓名搜索联系人。
我的问题是它显示搜索结果,但它们没有按联系人类型过滤。就像我选择“Contact_Type”作为“Buyer”并将名称选择为“vim”时,它会显示带有 vim 的搜索结果,但没有对 Contact_Type 进行过滤。
ContactController 中的搜索方法:
def search = {
def query = params.q
def filterContact = params.filter
if(query && filterContact){
def srchResults = searchableService.search(query, filterContact)
render(view: "list",
model: [contactInstanceList: srchResults.results,
contactInstanceTotal:srchResults.total])
}
else{
render "not record found";
}
}
选择框
<g:select style=" background:transparent;border:none;margin-bottom:10px;color:#787878;" from="${com.vproc.enquiry.ContactType?.values()}"
noSelection="['':'Search By']" value="${contactInstance?.contactType?.values()}" name="filter" />
重定向到搜索结果的JS方法:
<script type="text/javascript">
function showContact(id){
document.location.href ='/VProcureFinal/contact/search?q=' + $("#"+ id).val()
+ "&filter=" + $("#filter").val();
}
</script>
假设我创建了一个名为“Vim”且contact_type 为“Buyer”的联系人。当我用 contact_type="Seller" 和 name="Vim' 搜索它时,它仍然显示搜索结果但它不应该显示这个。有谁知道如何做到这一点?