remoteField не запускает вызов действия - PullRequest
0 голосов
/ 14 февраля 2012

Итак, я пытаюсь создать поле поиска, которое будет фильтровать контакты на лету. Итак, у меня есть основные результаты, отображаемые в шаблоне (Contact / list.gsp):

<%@ 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>

Вот мой шаблон (_searchResults.gsp):

<%@ 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>

Так что в настоящее время, когда я ввожу свой текст, ничего не происходит. Я добавил распечатку в свой метод поиска, и он вообще не вызывается. Это почти так, как будто мой remoteField стоит на месте и не активен.

Я пропустил предварительное условие для этого тега? Я посмотрел на официальный API онлайн, но ничего не заметил. Есть что-то новое в 2.0.0?

Я использую плагин с возможностью поиска для получения результатов в контроллере, просто к вашему сведению.

Спасибо всем за помощь!

Обновление : Итак, я явно добавил вызов библиотеки javascript в свой файл main.gsp, и мне кажется, что я получаю некоторый ответ от сервера, и это хорошая новость (missingPropertyException):

Мне пришлось добавить определение плагина к вызову библиотеки jQuery (library = jquery и plugin = query)

1 Ответ

0 голосов
/ 14 февраля 2012

Во-первых, спасибо тем, кто дал совет. Я смог понять, что Firebug был полезным инструментом, и этот вывод указал мне на мои библиотечные вызовы.

Итак, теперь я вижу действия с моего сервера с использованием правильного вызова библиотеки jQuery. Моя последняя проблема заключалась в том, что я ссылался на имя шаблона в обновлении remoteField, а не на имя основного элемента div внутри шаблона.

Как только я исправлю это, я работаю. Спасибо за все советы!

...