我正在尝试为.gsp
中的文本字段提供自动填充功能以下是我的代码。在我看来,每次都会缓存并显示自动完成搜索结果。
例如,
在文本字段(供应商)中,我尝试搜索以'v'开头的供应商
它会执行'autoCompleteVendor'操作并且不会返回任何结果,因为找不到匹配项。到目前为止一切顺利。
然后,我在数据库中添加了一个供应商,比如'vendor1'
现在,如果我在文本字段(供应商)中搜索,对于以“v”开头的供应商,它甚至不会采取行动,但不会返回与步骤2中的行为完全相同的结果。
但是,如果我搜索've',那么它会转到该操作并返回'vendor1'作为选项。这是因为我以前从未搜索过've'。
这种行为似乎适用于所有搜索。第一次搜索的结果以某种方式缓存,每次搜索该字符时返回相同的结果,即使数据库中的数据被添加/编辑/删除也是如此。
我期望每次在文本字段中执行搜索时执行操作并从数据库返回结果。而不是从缓存。
你能告诉我这里的错误吗?
我尝试设置autoComplete功能的maxCacheLength属性,但似乎也没有。
.gsp标题部分中的代码
<script>
$(function() {
$( '#vendor').autocomplete({
<%-- maxCacheLength:1, // no caching--%>
source: '<g:createLink controller="pr" action="autoCompleteVendor"/>'
});
});
</script>
.gsp中的Textfield标记
<g:textField name="vendor" id = "vendor" required=""
value="${prInstance?.vendor}"/>
控制器代码
def autoCompleteVendor = {
def prSearch= pr.withCriteria {
ilike 'vendor', params.term + '%'
}
render (prSearch?.'vendor' as JSON)
}