Grails remoteField未触发操作调用

Grails remoteField未触发操作调用,grails,searchable-plugin,Grails,Searchable Plugin,因此,我试图创建一个搜索字段,该字段将动态过滤联系人。因此,我在模板(Contact/list.gsp)中显示了主要结果: ${flash.message} 即时搜索: 这是我的模板(_searchResults.gsp): ${fieldValue(bean:contactInstance,字段:“firstName”)} ${fieldValue(bean:contactInstance,字段:“lastName”)} ${fieldValue(bean:contactInstanc

因此,我试图创建一个搜索字段,该字段将动态过滤联系人。因此,我在模板(Contact/list.gsp)中显示了主要结果:


${flash.message}
即时搜索:

这是我的模板(_searchResults.gsp):


${fieldValue(bean:contactInstance,字段:“firstName”)}
${fieldValue(bean:contactInstance,字段:“lastName”)}
${fieldValue(bean:contactInstance,字段:“phone”)}
${fieldValue(bean:contactInstance,字段:“email”)}
${fieldValue(bean:contactInstance,字段:“title”)}
${fieldValue(bean:contactInstance,字段:“jobFunc”)}
所以现在,当我输入文本时,什么都没有发生。我在搜索方法中添加了一个打印输出,根本没有调用它。这几乎就像我的remoteField处于停滞状态而不是活动状态

我是否缺少此标签的先决条件?我在网上查看了官方的API,但根本没有看到任何表明这一点的内容。2.0.0有什么新东西吗

我正在使用可搜索插件在控制器中提取结果,仅供参考

谢谢大家的帮助

更新:因此,我在main.gsp中显式添加了javascript库调用,并且似乎从服务器得到了一些响应,这是一个好消息(missingPropertyException):


我必须将插件定义添加到jQuery的库调用中(library=jQuery和plugin=query)

首先,感谢您的建议。我发现Firebug是一个非常有用的工具,它的输出将我指向了我的库调用

因此,我现在看到服务器使用正确的jQuery库调用执行操作。我的最后一个问题是,我在更新remoteField时引用的是模板名称,而不是模板中主div的名称


一旦我修好了,我就开始工作了。谢谢你的建议

您使用的javascript提供程序是什么,Jquery、Prototype、Dojo?对于Grails2.x,默认值为jQuery。您可以发布返回给Browser的HTML输出谢谢您的评论:Firebug的输出似乎是jQuery未在contact/search方法调用中定义。我没有显式声明javascript提供程序,因此默认为jQuery(list.gsp):很抱歉在注释中添加了标记。所以remoteField现在正在工作,当您更改文本字段的值时,它会向服务器发出ajax调用,对吗?那你现在的问题是什么!
<%@ page import="contactmanager.Contact" %>
<!doctype html>
<html>
<head>
    <meta name="layout" content="main">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <g:set var="entityName" value="${message(code: 'contact.label', default: 'Contact')}" />
    <title><g:message code="default.list.label" args="[entityName]" /></title>
</head>
<body>
    <div id="list-contact" class="mainContent-contact" role="main">
        <h1><g:message code="default.list.label" args="[entityName]" /></h1>

        <g:if test="${flash.message}">
            <div class="message" role="status">${flash.message}</div>
        </g:if>

        <div id="searchBox">
            Instant Search: <g:remoteField name="q" update="searchResults" paramName="q" url="[controller:'contact', action:'search']"/>
        </div>

        <g:render template="searchResults"/>

        <div class="pagination">
            <g:paginate total="${contactInstanceTotal}" />
        </div>

    </div>
</body>
<%@ page import="contactmanager.Contact" %>


        <div id = "searchResultsDiv">
                <table>
                    <thead>
                        <tr>
                            <g:sortableColumn property="firstName" title="${message(code: 'contact.firstName.label', default: 'First Name')}" />
                            <g:sortableColumn property="lastName" title="${message(code: 'contact.lastName.label', default: 'Last Name')}" />
                            <g:sortableColumn property="phone" title="${message(code: 'contact.phone.label', default: 'Phone')}" />
                            <g:sortableColumn property="email" title="${message(code: 'contact.email.label', default: 'Email')}" />
                            <g:sortableColumn property="title" title="${message(code: 'contact.title.label', default: 'Title')}" />
                            <g:sortableColumn property="jobFunc" title="${message(code: 'contact.jobFunc.label', default: 'Job Func')}" />
                        </tr>
                    </thead>
                    <tbody>
                    <g:each in="${contactInstanceList}" status="i" var="contactInstance">
                            <g:if test="${contactInstance.isActive}">
                                <tr class="${(i % 2) == 0 ? 'even' : 'odd'}">

                                <td><g:link action="show" id="${contactInstance.id}">${fieldValue(bean: contactInstance, field: "firstName")}</g:link></td>
                                <td>${fieldValue(bean: contactInstance, field: "lastName")}</td>
                                <td>${fieldValue(bean: contactInstance, field: "phone")}</td>
                                <td>${fieldValue(bean: contactInstance, field: "email")}</td>
                                <td>${fieldValue(bean: contactInstance, field: "title")}</td>
                                <td>${fieldValue(bean: contactInstance, field: "jobFunc")}</td>

                                </tr>
                            </g:if>
                    </g:each>
                    </tbody>
                </table>
        </div>