2011-05-16 5 views
0

У меня есть на следующие GSP страницы:Grails механизма поиска

<g:form controller="??" action="??"> 
    <h1>Search</h1> 
    <g:submitButton name="search" value="Search"/> 

    <div id="resultsHere"> 

    </div> 

    </g:form> 

Что я хочу сделать это, каждый раз «Поиск щелкает», база данных ищутся для этой записи, давайте представим им ищут названия книги. Поэтому каждый раз, когда я пишу заголовок, база данных находит книги и печатает все данные, связанные с книгами. Как я могу это сделать =?

Моя идея иметь что-то похожее на это в DIV:

<ul> 
<g:each in="${bookList}"> 
    <li>Name: ${it.name}, Locale: ${it.isbn}</li> 
</g:each> 
</ul> 

Так дело в том, когда кнопка поиска нажата, контроллер, ручка, что действие должно перенаправить страницу на ту же страницу, и передать отфильтрованный список книг, чтобы он мог быть напечатан в теге <g:each in="${bookList}">.

Я бы хотел, чтобы мнения об этом были лучшим решением в этом случае. Я мог бы также отобразить результаты на странице напрямую, но я хотел бы сделать некоторые css для просмотра, поэтому я думаю, что это не хорошая идея с помощью рендеринга. Любая помощь будет оценена и, если возможно, некоторые огни с кодом (особенно фильтрующая часть).

ответ

0

У меня было бы одно действие в вашем контроллере и вынести список.

т.е., как псевдо-код (и не полный)

BookController { 
    def search = {SearchComamnd search -> 

    def books = [] 
    if(search) { 
     books = Book.createCritera().list { 
     and { 
      title(search.title) 
      author(search.title) 
     } 
     } 
    } 

    render [ books:books ] 
    } 

    class SearchCommand { 
    def author 
    def title 
    } 
} 

а затем, когда на ваш взгляд

<g:form controller="??" action="??"> 
    <h1>Search</h1> 
    <g:submitButton name="search" value="Search"/> 

</g:form> 
<g:each in="${books}"> 
    <li class="book">Name: ${it.name}, Locale: ${it.isbn}</li> 
</g:each> 

теперь вы можете использовать CSS li.book украсить запись.

+0

@Gonzo Я удалил resultsHere div, потому что это бессмысленно и IMO предпочтительнее иметь результаты вне формы (как вы предлагаете) –

+0

Вам нужно будет добавить поля для формирования, чтобы пользователь мог ввести параметры поиска –

+0

@ Дон абсолютно прав ... но это не значит быть полным (или само по себе) –

Смежные вопросы